2015-04-03 105 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 =“starter”);哪个也没用。

+0

把它放在类的构造函数'category'。 – 2015-04-03 12:06:10

+0

所以.. category :: category(){string _starter =“starter”}? – Prymz 2015-04-03 12:08:08

+0

是的,但没有类型声明(即没有'string')...或者如下面给出的答案('category():_ starter(“starter”){...}')所示。或者,如果您希望在您的所有'category'对象中共享该属性的相同实例,则只需声明它为'static'。 – 2015-04-03 12:09:02

回答

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)文件中定义它,或者在构造函数中定义它。