[英]Returning a pointer from member function c++
如果我想從成員函數返回一個指針我首先認為語法應如下所示:
char SecondClass:: *getName() {
return this->name;
}
但是我在Eclipse中收到一條錯誤消息,它無法解決字段“name”。 在某種程度上它會隱藏在這種情況下。
這是正確的解決方案
char *SecondClass:: getName() {
return this->name;
}
那就是在classname之前加上*而不是function-name。
所以我的問題是:為什么第一個函數不起作用,這些從成員函數返回指針的實現之間有什么區別?
這與指針無關。 該方法稱為SecondClass::getName()
,它返回一個char *。 所以你可以寫
char* SecondClass::getName()
要么
char *SecondClass::getName()
但是你不能把*放在類名和方法名之間。
char SecondClass:: *getName()
是一個與char *SecondClass:: getName()
完全不同的函數。
第一個不的成員函數SecondClass
或其他任何類,所以你不能參考this
里面。 它恰好返回一種稱為指向成員的特殊指針。 它的類型為拼寫char SecondClass:: *
,它是指向類SecondClass
char
類型成員的指針。 你可能還不想知道這些。
你想要的ssyntax是return-type function-name parameter-list 。 您想要定義一個名為SecondClass::getName
的函數,它返回一個char *
並且不帶參數,因此char *SecondClass::getName()
。
在c ++中,成員函數的簽名是[returnType] [ClassName] :: functionName {}
星號是返回類型的一部分,它是char *,或指向char的指針。 你聲明一個函數的第一種方法是無效的c ++。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.