我应该如何为一个类编写一个构造函数来初始化一个 const 结构/具有 const 字段的成员?
在下面的示例中,我在结构 B 中定义了一个构造函数,它可以很好地初始化它的 const 字段。
但是当我尝试使用相同的技术来初始化类 A 中结构 C 的 const 字段时,它不起作用。有人可以帮我改写我的 A 类,让它开始工作吗?
#include <iostream>
class A
{
public:
struct C
{
C (const int _x) : x (_x) {}
const int x;
};
C c (3);
};
int main (int argc, char *argv[])
{
struct B
{
B (const int _x) : x (_x) {}
const int x;
};
B b (2);
std::cout << b.x << std::endl;
A a;
std::cout << a.c.x << std::endl;
return 0;
}
附言
我做了一些搜索,我认为,我理解,除非我有 C++11 支持或想要使用 boost 库,否则我必须定义一个辅助函数来初始化初始化列表中的 const 结构(C++ 常量结构成员初始化)但是我必须定义类似的结构似乎很疯狂,但是使用非 const 字段来初始化具有 const 字段的结构,不是吗?
我发现的另一件事告诉我应该在 A 类的构造函数中初始化 const 成员,而不是在 struct C 的构造函数中初始化(C++ 编译时错误:数字常量之前的预期标识符),但这对我来说似乎也很疯狂,因为为什么每次要添加新结构时都要重写类构造函数,为类A中的每个结构C都有一个单独的构造函数不是更方便吗?
我将不胜感激任何可能澄清我的困惑的评论。