【发布时间】:2013-12-18 13:50:42
【问题描述】:
我正在用 C++ 制作文字冒险游戏。这是该游戏中对象的结构(用户可以拾取并放入库存中)
template <int N>
struct Object
{
static const int length = N;
string names[N];
string description;
};
对象示例:
Object<2> flower = { {"flower", "the flower"}, "A strange looking flower"};
Object<3> book = { { "the book", "book", "recipe book" }, "The world's finest cocktail recipes now all in one easy to use companion." };
多个名称是命令解析器的同义词,因此用户可以输入“pick up book”或“pick up recipe book”,这两种情况下都会选择对象book。
现在我想创建一个矢量清单来存储清单中的所有元素。
vector<Object> inventory;
现在,当然,这给了我一个编译器错误,因为它需要这样的东西:
vector<Object<5>> inventory;
但是,有些对象的名称比其他对象多,这样的事情可能吗?如果可以,怎么办?
vector<Object<N>> inventory;
【问题讨论】:
-
为什么需要保留 N 作为模板? , 如果 N 不同那么你可以使用
std::vector<string> names而不是string names[N] -
现在似乎对用 cmets 写答案很着迷!
标签: c++ arrays templates struct