在C++中初始化哈希表数组的正确语法是什么
What is the proper syntax for initializing an array of hashtables in C++?
如何在c++中实现哈希表数组?
我有一个带有构造函数的hashtable类,它看起来像这样:
explicit ChainingHashTable( const HashedObj & notFound, int size = 101 );
因此,我尝试通过以下操作来制作这些哈希表的数组:
static ChainingHashTable<int> answers[5] = { {0, 500}, {0, 500}, {0, 500}, {0, 500}, {0, 500} };
然而,我得到以下错误&警告:
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]’
我不能使用不同的编译器,因为这是用于类赋值的,但我做错了什么?正确的语法是什么?
你试过吗
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) };
编译器告诉您要编写的代码是C++11。
您可以使用Boost.Assignment
相关文章:
- C++避免重复声明的语法是什么
- 使用基类指针调用基类的值构造函数的语法是什么?
- 这行/语法是什么意思?
- 初始化对象以在 C++08 中作为参数传递的首选语法是什么?
- 将引用绑定到指针的语法是什么?(各种)
- 这个typedef和转换运算符语法是什么意思
- 此语法是什么意思.(::*).
- 将显式指定的函数模板重载作为模板参数传递的正确语法是什么?
- 使用 pybind11 绑定 typedef 类型的正确语法是什么?
- 将此类传递给引用的正确语法是什么?
- 带有约束的可变参数模板的'requires'表达式的语法是什么?
- 在TensorFlow C++中用于feed_dict的语法是什么?
- 调用模板化类内的枚举类枚举器的正确语法是什么
- 返回没有 typedef 的成员函数指针的语法是什么?
- 将强制转换运算符重载到 std::map 的正确语法是什么
- 这种增量语法是什么意思
- 返回结构的方法的正确语法是什么
- C 中的(*)语法是什么意思
- 堆栈(int = 10),这个语法是什么意思(C++)
- variadic模板阵列参考参数的语法是什么?