簡體   English   中英

從成員函數c ++返回指針

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM