为什么成员函数会显示非成员函数呢明明在类里面了。,这是怎么回事
这个string是系统内置的类型,你换一个名字,比如叫mystring
表达式求值的顺序一部分是由操作符的优先级和结合性决定。
同样,有些表达式的操作数在求值的过程中可能需要转换为其他类型。
问题分析:
这个问题可能出现的原因是函数定义不规范或调用不规范。具体是指成员函数在定义时没有按照正确的格式写出,或者在调用时没有正确地指定该函数所在的类的实例。
解决方法:
1.检查函数定义是否规范。
如果成员函数被显示为非成员函数,那么可能是因为函数定义时没有按照规范的格式进行。成员函数的定义应该按照以下格式定义:
ReturnType ClassName::FunctionName(ParameterList)
例如:
int MyClass::Add(int x, int y)
其中ReturnType是返回类型,ClassName是类名,FunctionName是函数名,ParameterList是参数列表。
如果定义了成员函数的实现而不按照这种格式编写函数,那么就会出现函数被当作非成员函数的情况。因此,在编写代码时,应该检查函数定义是否规范,按照正确的格式进行编写。
2.检查函数调用是否规范。
如果成员函数被显示为非成员函数,那么可能是因为函数调用没有正确地指定该函数所在的类的实例。成员函数必须在类的实例中被调用。例如:
MyClass obj; int result = obj.Add(3, 5);
其中obj是MyClass的一个实例,而Add()是它的一个成员函数。必须在实例中调用它。如果函数调用中没有正确地指定该函数所在的类的实例,那么就会出现函数被当作非成员函数的情况。因此,在编写代码时,应该检查函数调用是否规范,确保调用正确的成员函数和正确的实例。
参考代码:
class MyClass { public: int Add(int x, int y) { return x + y; } };
int main() { MyClass obj; int result = obj.Add(3, 5); return 0; }
在这个例子中,MyClass有一个Add()函数,它需要两个整数作为参数,并返回它们的和。在使用Add()函数时,必须使用MyClass的实例,例如obj。如果没有正确地指定实例,那么就会出现函数被当作非成员函数的情况。