2009-08-05 74 views
1

我不明白爲什麼以下故障:爲什麼指針數組未能返回爲**

#include<string> 
class Foo 
{ 
    public: 
    std::string** GetStr(){return str;}  

private: 
    std::string * str[10]; 
}; 

感謝

+1

它不能做什麼?它爲我編譯。 – 2009-08-05 19:37:42

+0

是的...它也適用於我,我有一個不同的數據類型 – vehomzzz 2009-08-05 19:43:57

+1

然後,如果它仍然無法正常工作更新您的問題,包括您的確切代碼與您的類型 – 2009-08-05 19:47:16

回答

1

首先,你這個標記爲C++和C是哪一個? C沒有字符串類。如果它是C++,請刪除C標籤,這是誤導性的(它們不是同一種語言!)。

編輯:我誤解了你正在嘗試做什麼。你的方法應該編譯。你只需要記住取消引用返回的str來獲取字符串。

我很少對付雙間接,但你必須做這樣的事情要設置的字符串:

*(*str) = "STR"; //or 
*(str[i]) = "STR"; 

我不知道你將如何在這裏使用的地址符,因爲它返回一個引用而不是一個指針。

在str數組中設置字符串。你的方法真的很奇怪。問題是編譯器不知道你想取消引用一個字符串,所以它試圖取消引用char *。

我不明白你爲什麼要這樣做,但。這樣做會更好:

std::string str[10]; 
std::string* GetStr() { return str; } 
+0

刪除了「C」標籤。你可以這樣做w/rep> = 500. – azheglov 2009-08-05 19:41:27

+0

我把字符串* str []作爲例子的目的,我使用不同的類在我的情況下 – vehomzzz 2009-08-05 19:42:53

+0

是的好點,它是給C++的問題字符串類...雖然規則我馬有興趣是在這兩種語言.. – vehomzzz 2009-08-05 19:43:24

相關問題