だから、ベクトル 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 標準を使用) が、セッターは設定されません。