在C ++中初始化哈希表数组的正确语法是什么?

时间:2012-02-29 02:47:22

标签: c++ arrays constructor initialization hashtable

如何在c ++中实现Hashtables数组?

我有一个哈希表类,其构造函数如下所示:

explicit ChainingHashTable( const HashedObj & notFound, int size = 101 );

所以我尝试通过这样做来创建这些哈希表的数组:

static ChainingHashTable<int> answers[5] = { {0, 500}, {0, 500}, {0, 500}, {0, 500}, {0, 500} };

然而,我得到以下错误&amp;警告:

browser.cpp:106:71: warning: extended initializer lists only available with -std=c++0x or -std=gnu++0x [enabled by default]
browser.cpp:106:71: error: converting to ‘ChainingHashTable<int>’ from initializer list would use explicit constructor ‘ChainingHashTable<HashedObj>::ChainingHashTable(const HashedObj&, int) [with HashedObj = int]’

我不能使用不同的编译器,因为这是一个类赋值,但我做错了什么?什么是正确的语法?

2 个答案:

答案 0 :(得分:1)

编译器告诉您,您尝试编写的代码是C ++ 11。

您可以使用Boost.Assignment

答案 1 :(得分:1)

你试过吗

static ChainingHashTable<int> answers[5] = { ChainingHashTable<int>(0, 500), ChainingHashTable<int>(0, 500), ChainingHashTable<int>(0, 500), ChainingHashTable<int>(0, 500), ChainingHashTable<int>(0, 500) };


以上是全局变量的方法。对于静态类成员,声明和定义必须是分开的:

class SomeClass
{
    static ChainingHashTable<int> answers[5];
};

并在一个编译单元中(因此不在标题内)

ChainingHashTable<int> SomeClass::answers[5] = { ChainingHashTable<int>(0, 500), ChainingHashTable<int>(0, 500), ChainingHashTable<int>(0, 500), ChainingHashTable<int>(0, 500), ChainingHashTable<int>(0, 500) };