从成员函数c ++返回指针

时间:2014-04-08 11:24:50

标签: c++ function pointers

如果我想从成员函数返回一个指针,我首先想到的语法应如下所示:

 char SecondClass:: *getName() {
   return this->name;
 } 

但我在Eclipse中收到一条错误消息,表示它无法解决该字段" name"。不知怎的,它在这种情况下变得隐藏起来。

正确的解决方案是

 char *SecondClass:: getName() {
   return this->name;
 }

这是在类名前加*而不是函数名。

所以我的问题是:为什么第一个函数不起作用,这些从成员函数返回指针的实现有什么区别?

3 个答案:

答案 0 :(得分:7)

这与指针无关。该方法称为SecondClass::getName(),它返回一个char *。所以你可以写

char* SecondClass::getName()

char *SecondClass::getName()

但是你不能把*放在类名和方法名之间。

答案 1 :(得分:1)

char SecondClass:: *getName()char *SecondClass:: getName()的功能完全不同。

第一个不是SecondClass或任何其他类的成员函数,因此您无法在其中引用this。它恰好返回一种称为指向成员的指针的特殊指针。它的类型拼写为char SecondClass:: *,它是指向类char中类型为SecondClass的成员的指针。你可能还不想知道这些。

你想要的ssyntax是 return-type function-name parameter-list 。您希望定义一个名为SecondClass::getName的函数,该函数返回char *并且不带参数,因此char *SecondClass::getName()

答案 2 :(得分:0)

在c ++中,成员函数的签名是     [returnType] [ClassName] :: functionName {}

star是返回类型的一部分,它是char *或指向char的指针。你声明一个函数的第一种方法是无效的c ++。