我正在读一本关于 C++ 的书。我想我应该练习一些我所知道的。所以我创建了一个类,它包含一个classname * name[]
我稍后会分配的成员,new
因为我不知道它需要多少空间。因此,当我尝试键入时name = new classname[capacity /* a variable passed in constructor */]
,它不起作用。现在想来,这很有道理。我参考了我的书,我意识到这name
与&name[0]
. 这解释了为什么我的 IDE 说“表达式必须是可修改的左值”。所以现在我的问题是,如何在一行上声明一个数组,然后new
在另一行上分配它?我也想知道为什么type * name[]
作为班级成员有效,但不在班级之外?
class MenuItem
{
public:
MenuItem(string description):itsDescription(description) {};
void setDescription(string newDescription);
string getDescription() const;
private:
string itsDescription;
};
void MenuItem::setDescription(string newDescription)
{
itsDescription = newDescription;
}
string MenuItem::getDescription() const
{
return itsDescription;
}
class Menu
{
public:
Menu(int capacity);
private:
MenuItem * items[];
};
Menu::Menu(int capacity)
{
items = new MenuItem("")[capacity];
}
任何帮助深表感谢。