2015-04-22 45 views
0

在線documents似乎表明,作爲參數傳遞給同一類中的公共函數的類的私有成員變量需要聲明爲靜態。不過,我得到一個編譯錯誤:將私有靜態數組作爲參數傳遞給C++中的公共成員函數?

class C{ 

private: 
     static std::string table1[50]; 

public: 
     bool try(){ 
      helper(&table1); 
      return true; 
     } 
     bool helper (std::string * table){ 
      return true; 
     } 

但我得到這個編譯錯誤:

./c:72:31: error: cannot initialize a parameter of type 'std::string *' (aka 
     'basic_string<char, char_traits<char>, allocator<char> > *') with an rvalue of type 
     'std::string (*)[50]' 

有沒有別的東西,我錯過了?

+1

也許你的意思是'helper(table1);'? – Beta

+0

你可以指向文檔嗎?我看不到爲什麼用作參數的私有成員變量需要是靜態的任何理由。這將是一個嚴格限制的限制。 –

+0

這就是我所需要的,它最終工作:try(){helper(table1)};助手(std :: string * table); – Pippi

回答

1

您的helper函數將指針指向std::string。你傳給它一個指向50 std::string數組的指針。相反,通過陣列(在這種情況下,數組衰變爲指針)的第一要素,像

helper(table1); 

helper(&table1[0]); 

我嚴重懷疑雖然那這就是你所需要的。指向std::string的指針在這裏看起來有點可疑。最好使用std::vector<std::string>std::array<std::string, 50>

附註:不要致電您的會員功能try(),因爲try是保留的C++關鍵字。

相關問題