【发布时间】:2011-03-26 13:48:40
【问题描述】:
我有一个类和一个 const 变量。
struct A
{
int b;
};
A const a;
A类是POD,可以这样初始化。
A const a = { 3 };
恕我直言,拥有这样的构造函数看起来不错。
struct A
{
int b;
A(int newB) : b(newB)
{
}
};
但是 Clang 假定 A 是非聚合类型。为什么我不能有这样的构造函数?还是我应该做点别的?
我修改了问题以表达我原来的意思。我错误地将struct 写成了class,对于@Johannes 的混淆感到抱歉:)
【问题讨论】:
-
Eonil:我相信,我的回答澄清了你所有的疑惑,尤其是标准的引用。
-
您需要确定您的问题是什么:1) POD 类型或 2) 只需使用
{}初始化程序(即聚合)的能力。目前还不清楚具体是什么问题。 -
@Nawaz 感谢您的关心。你的答案就是我想要的!
-
@AndreyT 我的问题是关于 POD 类型的构造函数。我曾想使用构造函数语法而不是
{...}语法。但现在我知道我的想法是错误的。 -
@AndreT:两者不一样吗?在我看来,在 C++03 中,只有聚合(即它的所有变体)可以用
{}? 初始化。而聚合类不过是 POD 类,对吧?
标签: c++