Итак, допустим, у меня есть вектор, vector<Item*> vItem
и класс Item с функцией-членом Item::setValue();
, Позволяет также сказать, что я заполнил этот вектор, используя vItem.push_back(new Item)
.
Теперь для доступа к этой функции-члену через указатель в векторе будет vItem[0]->setValue("key");
, быть действительным? Я предположил, что это было, однако, когда я cout
переменных - членов с помощью getValue()
функции, ничего нового не возвращается, только значения по умолчанию из моего конструктора.
Есть идеи? Я чувствую, что это глупая ошибка в моей логике, но я не уверен. Любая помощь будет принята с благодарностью.
редактирует:
setValue code:
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++ с использованием стандарта С++ 0x), однако установщик просто не установлен.
Ваш getValue возвращает пустоту, и после getValue()
в вашей реализации этого метода getValue()
. Изменить на string Item::getValue(){return m_sValue;}
string Item::getValue();