【发布时间】:2020-06-29 08:05:16
【问题描述】:
using namespace std;
namespace sdds {
const int MAX_NO_OF_ITEMS = 10;
class Menu {
char* m_title;
int indentation;
int m_numofItems;
//issue
MenuItem*m_items = new MenuItem[MAX_NO_OF_ITEMS + 1]; // Declaration of MenuItem type not working
public:
Menu();
Menu(const char* title, int indent = 0);
Menu(const Menu& menu);
~Menu();
bool isEmpty() const;
void add(const char* str);
int run();
ostream& display(ostream& os);
void display() const;
Menu& operator=(const Menu& menu);
operator bool();
operator int();
string& operator=(const char* str);
Menu& operator<<(const char* item);
//friend class MenuItem;
};
class MenuItem {
char* i_name;
//public:
MenuItem();
MenuItem(char*);
MenuItem(const MenuItem& mi);
void setMenuItem(char*);
~MenuItem();
//ostream& display(ostream& os);
ostream& operator<<(ostream& os) const;
istream& operator>>(istream& os) const;
MenuItem& operator=(const MenuItem& mi);
friend class Menu;
};
}
我正在尝试使Menu 类保存MenuItem 指针数组。 Menu 是 MenuItem 的朋友。我在尝试声明这个指针数组时遇到了麻烦,因为我收到告诉我“MenuItem”不是类型的错误。 “C4430 缺少类型说明符 - 假定为 int。” “C2143 语法错误:缺少 ';'前 '*'”
和“';'之前的C2238意外标记”
【问题讨论】:
-
两个问题。首先,要声明指向
MenuItem的指针,必须声明类MenuItem(例如前向声明)。其次,new表达式被用作初始化器 -new MenuItem[MAX_NO_OF_ITEMS + 1];, - 需要预先定义MenuItem。
标签: c++