2015-04-01 50 views
-11
class Tool 
{ 
public: 
    Tool(); 
    ~Tool(); 

private: 
    char **s; 
}; 

char *s1[]={"hello","world"}; 

我怎麼能初始化s二維字符指針,並使其同s1我怎麼能初始化C++類

s={"hello","world"} 

似乎不起作用。

+1

@Anguslilei'char ** s;'這不是一個二維數組,這是一個指向指針的指針。 – 2015-04-01 12:53:14

+0

總猜測,'std :: vector >' – 2015-04-01 13:02:53

+0

你永遠不應該。你應該使用一個字符串向量。 – 2015-04-01 13:04:43

回答

1

雖然你可以使用std::vector<std::string>,但我覺得直接回答你的問題對你更有益。

char** s是指向指針的指針;可能是一個指向指針數組中第一個指針的指針。

char* s1[]是指向常量數據的指針數組(實際上應該是const)。

如果你想s來的工作方式類似於s1,你首先需要分配的指針數組,這是建議由其他原因std::vector。你可以用new自己做,但是你必須在某個時候釋放分配的內存。直接使用new容易泄漏。當對象被銷燬時,std::vector將釋放其分配的內存。如果你願意,你也可以在你的析構函數中調用delete[]

當你的數組已被分配時,你需要的std::copy指針數組到指定的s指針數組。這不是一個單獨的分配操作。

+0

s1似乎很難與s1類似地工作。現在,我知道s和s1之間的區別,非常感謝大家! – Anguslilei 2015-04-01 14:09:17

+0

而在於其他人推薦std :: vector 的原因:) – 2015-04-01 16:39:29