假设我有一个向量、vector<Item*> vItem
和一个带有成员函数 Item::setValue();
的 Item 类。假设我使用 vItem.push_back(new Item)
填充了该向量。
现在,要通过向量中的指针访问该成员函数,vItem[0]->setValue("key");
. 是否有效?我假设是这样,但是当我使用 getValue()
函数cout
成员变量时,没有返回任何新内容,只返回来自我的构造函数的默认值。
有什么想法吗?我觉得这是我的逻辑上一个愚蠢的错误,但我不确定。任何帮助将不胜感激。
编辑:
设置值代码:
void Item::setValue(string sValue)
{
m_sValue = sValue;
}
使用私有变量:
string m_sValue;
获取值代码:
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;
}
我还应该注意:一切都编译得很好(使用 c++0x 标准的 g++(,但是,setter 就是没有设置。
在该方法的实现中,您的 getValue 返回一个空,并且在getValue()
后有一个不合适的分号。更改为string Item::getValue(){return m_sValue;}