0

だから、ベクトル vector<Item*> vItemとメンバー関数を持つアイテムクラスがあるとしましょうItem::setValue();。を使用してそのベクトルを設定したとしましょうvItem.push_back(new Item)

ここで、ベクトル内のポインターを介してそのメンバー関数にアクセスするには、vItem[0]->setValue("key");. 有効ですか?私はそれがあったと思いましたがcout、関数を使用してメンバー変数を使用するgetValue()と、新しいものは何も返されず、コンストラクターからのデフォルト値のみが返されます。

何か案は?私の論理ではばかげた間違いのように感じますが、よくわかりません。どんな助けでも大歓迎です。

編集:

setValue コード:

void Item::setValue(string sValue)
{
        m_sValue = sValue;
}

プライベート変数で:

string m_sValue;

getValue コード:

string Item::getValue()
{
    return m_sValue;
}

コードの単純なバージョン:

void func2(vector<Item*>& vItem)
{
    vItem.push_back(new Item);
    vItem[0]->setValue("key");
}

int main(int argc, char * argv[])
{
    vector<Item*> vItem;
    func2(vItem);
    cout << vItem[0]->getValue() << endl;

    return 0;
}    

また、すべてが正常にコンパイルされます (g++ は c++0x 標準を使用) が、セッターは設定されません。

4

1 に答える 1

0

getValue()あなたの getValue は void を返し、そのメソッドの実装の後に場違いなセミコロンがあります。への変更string Item::getValue(){return m_sValue;}

于 2013-10-07T02:29:11.953 に答える