2015-09-26 33 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

相关问题