2015-04-03 3 views
1

Это может показаться очевидным ответом. Но я пытаюсь присвоить значение моему атрибуту. IE:C++ Назначение значения атрибуту

class category{ 
private: 
    string _starter; 
    string _maincourse; 
    string _pudding; 
    string _drink; 
    string _itemDescription; 
    string _price; 
public: 
    category(); 
    category(string starter, string maincourse, string pudding, string drinks); 
    void display(); 
    string tostring(); 
    //Giving value to attributes 
    string _starter = "starter"; 
}; 

Я пытаюсь сделать _starter = «стартер» же для maincourse и т.д. и т.п ... однако я получаю сообщение об ошибке сказав «что делает _starter статический».

Я также попытался сделать категорию (_starter = "стартер"); и это тоже не сработало.

+0

Положите его в конструктор класса 'category'. –

+0

So .. category :: category() {string _starter = "starter"}? – Prymz

+0

Да, но без объявления типа (т. Е. Без строки) ... Или, как показано в ответе, который я дал ниже ('category(): _ стартер (« стартер ») {...}'). Или, если вы хотите, чтобы один и тот же экземпляр этого атрибута был разделен во всем объекте 'category', просто объявите его' static'. –

ответ

0

Вы можете передать начальные значения в качестве аргументов конструктору.

// ... 
// constructor: 
category 
     (const char * starter 
     , const char * maincourse 
     , const char * pudding 
     , const char * drink 
     , const char * itemDescription 
     , const char * price 
     ) 
     : _starter(starter) 
     , _maincourse(maincourse) 
     , _pudding(pudding) 
     , _drink(drink) 
     , _itemDescription(itemDescription) 
     , _price(price) 
     {} 

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

public: 
    string& Starter() { return _starter; } // non-const accessor 
    const string& Starter() const { return _starter; } // const accessor. 
    // ... 
0

Вы не можете определить значение элемента в объявлении класса, вам нужно либо объявить его как статический, либо определить его в файле определения (например, .cpp), либо определить его в конструкторе.

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