我正在尝试声明 vector<Item>
作为另一个类的私有(private)成员Inventory
, 但它给我一个错误说 Item
不在范围内。这两个类都在同一个文件中声明。我不知道如何更改它查看的范围或您应该做些什么来使其工作。
下面是代码,可以清楚地说明我要做什么。
class Inventory {
public:
private:
vector<Item> inventory;
};
class Item {
public:
void SetName(string nm)
{ name = nm; };
void SetQuantity(int qnty)
{ quantity = qnty; };
void SetPrice(int pric)
{ price = pric; };
virtual void Print()
{ cout << name << " " << quantity << " for $" << price
<< endl; };
virtual ~Item()
{ return; };
protected:
string name;
int quantity;
int price;
};
Item
必须在用作模板参数之前定义。
从技术上讲,您可以在特定上下文中使用前向声明,但为了节省您的时间和学习确切规则的挫败感,确保您首先定义它会更容易。
一般来说,声明的顺序很重要。如果您在另一个类型的声明中使用一个类型,则所使用的类型必须已经被定义。此规则的异常(exception)情况涉及指针和引用的使用,它们只需要前向声明。
我是一名优秀的程序员,十分优秀!