0

所以我想创建同一个枚举的多个实例,然后将每个枚举存储在 Visual C++ 中的列表中。我计划使用通用列表,但愿意接受任何其他方式来做到这一点。无论如何,当我创建一个List实例时,我得到的错误是Name is not a valid generic argument. 提前感谢您的帮助!

基本代码:

enum Name
{
    one, two, three,
};

void GetInput(List<Name> names);
4

2 回答 2

3

如果您的目标是c++/cli,则此代码编译得很好(注意枚举现在是托管枚举,而不是像您定义的那样的非托管枚举):

using namespace System::Collections::Generic;

public enum class Name
{
    one, two, three,
};

void GetInput(List<Name> names);
于 2013-03-31T08:30:41.737 回答
1

也许您应该切换到更好、更符合C++11(或 C++03)的编译器和/或使用std::list而不是List. 以下代码

 #include <list>
 enum Name {
    one, two, three
 };
 void GetInput(std::list<Name> names);

g++-4.8 -Wall -std=c++11 -c us.cc在 Linux 上被接受而没有警告。我正在使用刚刚发布的GCC 4.8版本。但是同样的例子也被旧的g++-4.6 -Wall -c us.cc使用一些以前的 C++ 标准所接受。

请注意,我正在使用(std::list因为不在C++2011 标准中 - 也不在 C++03 等以前的标准中)。也许您的编译器可能对标准的[ 而不是] (或者,或者其他一些标准的 C++11容器)更满意?Liststd::listListstd::vector

于 2013-03-31T08:13:49.907 回答