【问题标题】:Declaration of Array of Pointers Not Being Recognized声明不被识别的指针数组
【发布时间】: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 指针数组。 MenuMenuItem 的朋友。我在尝试声明这个指针数组时遇到了麻烦,因为我收到告诉我“MenuItem”不是类型的错误。 “C4430 缺少类型说明符 - 假定为 int。” “C2143 语法错误:缺少 ';'前 '*'” 和“';'之前的C2238意外标记”

【问题讨论】:

  • 两个问题。首先,要声明指向MenuItem 的指针,必须声明类MenuItem(例如前向声明)。其次,new 表达式被用作初始化器 - new MenuItem[MAX_NO_OF_ITEMS + 1];, - 需要预先定义 MenuItem

标签: c++


【解决方案1】:

Class MenuItem 应该首先在你的情况下定义。申报时未知

using namespace std;

 namespace sdds {

     const int MAX_NO_OF_ITEMS = 10;
     class Menu;
     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;
    };

    class Menu {
        char* m_title;
        int indentation;
        int m_numofItems;

        MenuItem*m_items = new MenuItem[MAX_NO_OF_ITEMS + 1];

    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);

    };


}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-08-16
    • 1970-01-01
    • 1970-01-01
    • 2014-07-14
    • 1970-01-01
    相关资源
    最近更新 更多