【发布时间】:2012-11-15 18:44:54
【问题描述】:
我还不了解用于在构造函数初始化程序列表中初始化数组的新 C++11 语法。我不再坚持使用 C++03,但由于程序限制,我不能使用 boost 或 std::vector。
FOO 的实例必须通过构造函数调用来确定大小,并且表现得好像 x 和 y 的大小是静态已知的。新的 C++11 特性是否允许这样做?
我不确定std::initializer_list<> 是否或如何提供帮助。
class FOO
{
public:
// this constructor needs to size x = count and y = count * 4
FOO(int count) :
{
// interate over x and y to give them their initial and permenent values
}
private:
const BAR x[];
const TAR y[];
};
#include "foo.h"
void main(void)
{
// both need to work as expected
FOO alpha(30);
FOO * bravo = new FOO(44);
}
【问题讨论】:
-
“必须通过构造函数调用来确定大小,并且表现得好像 x 和 y 的大小是静态已知的”——您确实意识到这些是相互矛盾的要求,对吧?另外,请告诉我不允许您使用
std::vector的“程序约束”。 -
我同意矛盾的要求。我有大量静态只读数据需要可供此类的实例使用。我不希望堆或堆栈上的数据。从那以后,我一直在看 Marcus 的问题link,更重要的是 Bill Forster 的回复。我的数据可能太大而无法直接放入源代码。 > [1,000,000]。我希望有某种方法可以直接将这些记录直接加载到给定内存位置的 ram/rom 中,我可以从指针中使用它。
-
@wapadomo:欢迎来到XY Problem。您询问了 initializer_lists 和初始化,但您真正想要的是一种将批量数据存储在可执行文件中并获得指向它的指针的方法。那么你应该问过那个。
标签: c++ constructor c++11 initializer-list