C++ 从成员函数c++;
如果我想从成员函数返回指针,我首先认为语法应该如下所示:C++ 从成员函数c++;,c++,function,pointers,C++,Function,Pointers,如果我想从成员函数返回指针,我首先认为语法应该如下所示: char SecondClass:: *getName() { return this->name; } 但是我在Eclipse中收到一条错误消息,它无法解决字段“name”的问题。不知怎的,它在这种情况下被隐藏了起来 正确的解决办法是这样 char *SecondClass:: getName() { return this->name; } 这就是在类名而不是函数名之前加* 所以我的问题是:为什么
char SecondClass:: *getName() {
return this->name;
}
但是我在Eclipse中收到一条错误消息,它无法解决字段“name”的问题。不知怎的,它在这种情况下被隐藏了起来
正确的解决办法是这样
char *SecondClass:: getName() {
return this->name;
}
这就是在类名而不是函数名之前加*
所以我的问题是:为什么第一个函数不起作用,这些从成员函数返回指针的实现之间有什么区别 这与指针无关。该方法被称为
SecondClass::getName()
,它返回一个char*。这样你就可以写作了
char* SecondClass::getName()
或
但是,不能在C++中使用类名和方法名之间的关系。
< P>,成员函数的签名是 [returnType][ClassName]::函数名{}星形是返回类型的一部分,返回类型为char*,或指向char的指针。你声明函数的第一种方式是无效的C++。<> >代码> char第二类::* GETNAMEL()/CUT>是与<代码> char *第二类::GETNAMEL()//>代码非常不同的函数。 第一个类不是
第二类
或任何其他类的成员函数,因此您不能在其中引用此
。它恰好返回一种特殊类型的指针,称为指向成员的指针。它的类型拼写为charsecondclass::*
,是指向classSecondClass
中char
类型成员的指针。你可能还不想知道这些
您需要的ssyntax是返回类型函数名参数列表。您想定义一个名为SecondClass::getName
的函数,该函数返回一个char*
且不接受任何参数,因此char*SecondClass::getName()
char *SecondClass::getName()