为什么会出现语法错误:缺少';'在“ *”之前

时间:2019-10-27 01:57:48

标签: c++

在类声明中,我在两行上收到此错误。当我尝试声明一个成员数据时,就得到了它,这是一个指向具有全局常量int数组大小的对象的指针数组。第二次出现错误是当我声明一个成员函数时,该成员函数返回一个指向与数组相同类型的对象的指针。这两个都是班上的私人成员。

我知道我不缺少数组的类声明和函数返回值的结尾分号。我曾尝试将语法中的星号移动到靠近变量名,靠近变量类型以及两者之间的位置。

class InventorySystem {
public:
   InventorySystem();
   InventorySystem(int store_id, string store_name);
   ~InventorySystem();
   void set_store_name(string store_name);
   void set_store_id(int store_id);
   void set_item_count(int item_count);
   string get_store_name(void) const;
   int get_store_id(void) const;
   int get_item_count(void) const;
   void BuildInventory(void);
   void ShowInventory(void) const;
   void UpdateInventory(void);
   void Terminate(void) const;
private:
   string store_name_;
   int store_id_;
   InventoryItem *p_item_list_[g_kMaxArray];            // THIS LINE
   int item_count_;
   InventoryItem* FindInventoryItem(int item_id) const; // THIS LINE
};

class InventoryItem {
public:
   InventoryItem();
   InventoryItem(bool restocking);
   virtual ~InventoryItem();
   void set_restocking(bool restocking);
   bool get_restocking(void) const;
   int get_item_id(void) const;
   void Display(void) const;
protected:
   int item_id_;
   bool restocking_;
};

我收到很多错误消息,但是似乎所有错误消息都可以追溯到这两个。我无法编译我的代码,也不知道为什么。如果可以提供更多相关信息,请告诉我。谢谢。

2 个答案:

答案 0 :(得分:2)

您尚未声明类InventoryItem。只需移动:

class InventoryItem { }

上方:

class InventorySystem { }

答案 1 :(得分:2)

这是未声明InventoryItem的症状(尽管我认为是其他原因)。这意味着a)您需要在InventorySystem的声明上方包含用于声明此类的标头,或者b)InventoryItem实际上是在实际代码中的InventorySystem之后声明的(即,您尚未通过将其复制到此处进行更改)。在这种情况下,您需要重新排列声明。

请注意,您还可以选择使用forward declaration(感谢user4581301)。