2015-04-24 4 views
-5

У меня в моем проекте класс «Продукт», и в основной функции я делаю новый товарный продукт «productsListHead». В моей основной функции я вызываю функцию класса addProduct, которая добавляет продукт в связанный список классов. Чтобы сделать программу более организованной, я хочу ее делить на функции. Я хочу создать функцию, которая вызывает функцию addProduct. Это то, что я пытался сделать: main.cpp:Как вызвать функцию класса, от другой функции

int main(){ 
    int option; 
    Product productsListHead; 
    do{ 
     cin>>option; 
     if(option==1) 
      products_add(&productsListHead); 
    }while(option!=0); 
    return 1; 
} 

void products_add(Product productsListHead){ 
    productsListHead.addProduct(&productsListHead); 
} 

это название "addProduct" в List.cpp:

void Product::addProduct(Product* head){...} 

Это не сработало. Как я могу использовать "productsListHead.addProduct (& productsListHead);" в products_add?

+3

«Это не работает» .. Что именно вы пытаетесь и что именно не работает? – Vinzenz

+1

Какие ошибки вы получили? Это, вероятно, даст хорошее представление о том, что делать в первую очередь. –

+0

, когда я использую «productsListHead.addProduct (& productsListHead);» в основной функции он добавляет продукт. но я хочу использовать его в другой функции. когда код выше имеет ошибку компиляции – hhgjgj

ответ

0

Ваш

void products_add(Product productsListHead) 

принимает объект, но вы называете его, используя указатель

products_add(&productsListHead); 

BTW: Обратите внимание, что ваш текущий код проходит один и тот же объект каждый раз.

0
void products_add(Product productsListHead) 

эта подпись products_add функция принимает Product Object и не адрес Product Object

этот вызов должен быть

products_add(productsListHead); 

или функция должна быть

void products_add(Product* productsListHead) 
+0

thx он исправил ее. я не заметил, что я передаю указатель ... – hhgjgj

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