我正在尝试声明一个vector<Item>
作为另一个类的私有成员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
必须在用作模板参数之前定义。
从技术上讲,您可能能够在特定的上下文中摆脱前向声明,但为了节省您的时间和学习确切规则的挫败感,更容易确保您首先定义了它。
一般来说,声明的顺序很重要。如果你use一个类型在另一个类型的声明中,所使用的类型必须already被定义。此规则的例外情况包括仅需要前向声明的指针和引用的使用。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)