[英]how I can overcome this error C2679: binary '>>' : no operator found which takes a right-hand operand of type 'const char []'
#include <iostream>
using std::cout;
using std::cin;
using std::endl;
#include <cstring>
void initialize(char[],int*);
void input(const char[] ,int&);
void print ( const char*,const int);
void growOlder (const char [], int* );
bool comparePeople(const char* ,const int*,const char*,const int*);
int main(){
char name1[25];
char name2[25];
int age1;
int age2;
initialize (name1,&age1);
initialize (name2,&age2);
print(name1,age1);
print(name2,age2);
input(name1,age1);
input(name2,age2);
print(name1,age1);
print(name2,age2);
growOlder(name2,&age2);
if(comparePeople(name1,&age1,name2,&age2))
cout<<"Both People have the same name and age "<<endl;
return 0;
}
void input(const char name[],int &age)
{
cout<<"Enter a name :";
cin>>name ;
cout<<"Enter an age:";
cin>>age;
cout<<endl;
}
void initialize ( char name[],int *age)
{
name[0]='\0';
*age=0; }
void print ( const char name[],const int age )
{
cout<<"The Value stored in variable name is :"
<<name<<endl
<<"The Value stored in variable age is :"
<<age<<endl<<endl;
}
void growOlder(const char name[],int *age)
{
cout<< name <<" has grown one year older\n\n";
*age++;
}
bool comparePeople (const char *name1,const int *age1,
const char *name2,const int *age2)
{
return(*age1==*age2 && !strcmp(name1,name2));
}
The name
parameter of your input()
function is a pointer to const char
. 您的
input()
函数的name
参数是指向const char
的指针。 const
means you can't modify it, so if you need to modify it, it needs not to be const. const
表示您无法修改它,因此,如果需要修改它,则不必为const。
That said, to really fix it, use std::string
wherever you currently use char[]
s and char*
s and consider returning objects instead of using out-parameters; 也就是说,要真正修复它,请在当前使用
char[]
和char*
的任何地方使用std::string
并考虑返回对象而不是使用out-parameters。 this will make your code much less error prone and easier to follow and understand. 这将使您的代码不那么容易出错,并且更易于理解和理解。
The symbol '>>' is an operator. 符号“ >>”是运算符。 The writer of the String class included this operator to only take primitive types and of course the String class type.
String类的编写者包括此运算符,以便仅采用基本类型,当然也采用String类类型。
You have two options: 您有两种选择:
Look up overloading operator if you really want to have fun. 如果您真的想找乐子,请查找重载运算符。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.