2013-04-27 3 views
0
#include <iostream> 
using namespace std; 

string itmCndtn,itemName; 
int strtPrice,sellValue,numRelist,optn=0; 

class CBAY_ITEM 
{ 
    string enterName(); 
    string enterCondition(); 
    int enterStrtPrc(); 
    int enterSellVal(); 
}; 

CBAY_ITEM infoClass; 
CBAY_ITEM *nPointer=NULL; 


int main() 
{ 
    int optionChosen=0; 
    int strtPrcTemp=0,sellValueTemp=0; 
    do 
    { 
     cout << "\nPlease Enter a Choice From the Menu.\n"<<endl; 
     cout << "\n1.Add an Item to Selling Queue.\n2.Put Item for Sale.\n3.Show Me the Money.\n4.Exit." << endl; 
     cin>>optionChosen; 
     switch(optionChosen) 
     { 
     case 1: 
     { 
      nPointer=new CBAY_ITEM; 
      nPointer->enterName()=infoClass.enterName(); 
      nPointer->enterCondition()=infoClass.enterCondition(); 
      nPointer->enterStrtPrc()=infoClass.enterStrtPrc(); 
      nPointer->enterSellVal()=infoClass.enterSellVal(); 

     } 
     case 2: 
     { 

     } 
     case 3: 
     { 

     } 

     } 

    }while(optionChosen!=4); 

    return 0; 
} 

Это мой код до сих пор, я опустил определение функций внутри класса, поскольку это не похоже на то, где проблема. Когда я пытаюсь скомпилировать, компилятор показывает ошибку:lvalue требуется как левый операнд задания?

lvalue required as left operand of assignment. 

Я не уверен, что он пытается сказать.

nPointer->enterStrtPrc()=infoClass.enterStrtPrc(); 
nPointer->enterSellVal()=infoClass.enterSellVal(); 

должны возвращать ИНТ значения и хранить их в динамически созданном классе infoClass.

+1

Добавьте 'break' в конце каждого блока корпуса: иначе вы провалитесь. –

+0

@AdrianPanasiuk thanx, я собирался добавить их, как только закончил со всей кодировкой. – 2013-04-27 23:21:55

+0

Это означает, что когда, например, optionChosen == 1, сначала выполняется код из блока 'case 1:', затем код для 'case 2:' и т. Д. (потому что у вас нет разрыва, что означает, что вы не выполняете следующий блок дела) –

ответ

2

Изменить Ваши функции-члены для возврата ссылки:

struct CBAY_ITEM 
{ 
    string & enterName(); 
    string & enterCondition(); 
    int & enterStrtPrc(); 
    int & enterSellVal(); 
}; 

(. А также получить право контроля доступа)

+0

'int CBAY_ITEM :: enterStrtPrc() { cout <<" \ nВнешняя стартовая цена: "; cin >> strtPrice; return strtPrice; } ' Теперь компилятор говорит, что определение не соответствует? Что мне нужно изменить в определении? – 2013-04-27 23:20:26

+0

@ user2086751: Err ... то же самое ?! –

+0

Я уже пробовал 'int CBAY_ITEM :: & enterStrtPrc()', который не работает. Извините, я просто очень новичок в C++. – 2013-04-27 23:23:32

0

nPointer-> enterStrtPrc() есть выражение, которое возвращает RValue. скажем, номер 5., который вы не можете присвоить ему, - это так же разумно, как если бы вы изменили типы возвращаемых значений на ссылку, как это предложил @Kerrek SB, он вернет хранилище, в которое вы можете поместить значения, которые вы хотеть.

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