2015-02-26 6 views
0

Я видел другие подобные вопросы, но я не мог понять, в чем проблема. У меня есть заявление в классе инвентаризации как:Неопределенная ссылка на ошибку функции?

class Inventory 
{ 
    Public: 
     void print(); 
     void sell(Item*); 
     void add(); 
     void find(string); 
    Private: 
     Item* first; 
} 

А потом в inventory.cpp у меня есть:

void sell(Item* item_name) 
{ 
    .......................... 
} 

И ошибка происходит из вызова его в основной(), как:

Inventory store_inventory; 
Item* cur_item; 
cout<<"Item name: "; 
string name; 
cin>>name; 
cur_item = find(name); //find returns Item* 

store_inventory.sell(cur_item); 

Ошибка - это одна линия для вызова на продажу. Есть идеи?

+1

№ Поиск возвращает 'void' в соответствии с вашим определением' Inventory' ... – John3136

ответ

3

Определения должны указать, что она является функцией членом Inventory:

void Inventory::sell(Item* item_name) 
{ 
    // ... 
} 

Кроме того, существуют проблемы с функцией find(). Вы объявляете его как функцию-член void, но используете, как если бы это была бесплатная функция, которая возвращает Item*.

0

Это элемент класса?

Вы должны изменить тип void на тип, который хотите вернуть item.

Также, если вы хотите передать тот же указатель, вы можете использовать функцию продажи, используя параметр & перед именем переменной, например sell(item* &varname).

Смежные вопросы