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::*
,是指向class
SecondClass
char
类型成员的指针。你可能还不想知道这些

您需要的ssyntax是返回类型函数名参数列表。您想定义一个名为
SecondClass::getName
的函数,该函数返回一个
char*
且不接受任何参数,因此
char*SecondClass::getName()

char *SecondClass::getName()