2015-09-26 35 views
-1

所以,我想通過把函數(分裂)的返回值來修改類的私有部分的信息(類型爲(矢量〜應變?字符串))到reunat_(載體)和palankuva_ (字符串),它們是Class'變量。我如何以及在哪裏定義變量「tallennettava」,以便我可以將值函數「split()」返回給「tallennettava」變量並從那裏將值複製到類變量reunat_和palankuva_。看到下面assing變量「tallennettava」的代碼reunat和古華和後空變量我嘗試分配「分割()」函數返回值給它,它不能因爲「tallennettava」做變量已經是「滿「從空變量reunat和庫瓦。對不起,非英文變量名稱。 :(我怎樣才能函數的返回值的地方,新的變量C++

void Pala::tallenna_pala(string komento) 
{ 
    vector<string> reunat; 
    string kuva; 
    string palantiedot; 

    char erotinmerkki; 
    erotinmerkki = (':'); 
    reunat_.clear(); 
    palankuva_.clear(); 

    if (komento.length()> 23) 
    { 
     if (patki_komento(komento, palantiedot)==true) 
     { 
      Pala tallennettava {reunat, kuva}; 
      tallennettava = split(palantiedot,erotinmerkki); 

      reunat_ = reunat; 
      palankuva_ = kuva; 
      cout << reunat.at(1)<<endl; 
     } 
     else 
     { 
      cout << "Virheellinen syote" << endl; 
     } 
    } 
} 

回答

0

你可能想是這樣的:

*this = split(palantiedot, erotinmerkki); 

我這樣說是因爲split似乎返回的東西從一個Pala可以構造,所以它更容易只是把它分配給*this比以捕獲結果,然後逐個複製字段

+0

這不僅複製'reunat_'和'palankuva_' ... – jpo38

+0

@ jpo38:你說得對,但我敢打賭,沒有其他領域。 –

+0

總是很難回答這樣的迴避問題...... ;-) – jpo38

0

由於您處於帕拉類中,因此您可以訪問任何帕拉物體的私人成員,因此請執行以下操作:

Pala tallennettava = split(palantiedot,erotinmerkki); 
    reunat_ = tallennettava.reunat_; 
    palankuva_ = tallennettava.palankuva_; 

另外,不要做if (cond == true),喜歡if (cond)這是更安全,因爲有一個什麼樣的的true值(false0沒有標準的定義,true是別的什麼,所以(3 == true)可以進行評估,以false(3)會被評估爲true

+0

「patki_komento」函數返回bool。錯誤檢查有一個if/else結構,如果一切順利,它將返回true。這就是爲什麼我有一個if ==真實條件。 – user3452623

+0

正如所解釋的那樣,'if(patki_komento(...)== true)'是不安全的,你應該用'if(patki_komento(...))' – jpo38

相關問題