【发布时间】:2013-03-15 17:38:05
【问题描述】:
我有一个struct A,它有几个初始化了不同数据成员的构造函数。
template<typename T>
struct A {
typedef std::vector<T> type1
type1 a;
type1 b;
type1 c;
A(type1 i_a): a(i_a) {
}
A(type1 i_a, type1 i_b): A(i_a), b(i_b) {
}
A(type1 i_a, type1 i_b, type1 i_c): A(i_a, i_b), c(i_c) {
}
};
我得到的错误是当我用 custom_type 实例化它时,错误是
type A<custom_type> is not direct base of A<custom_type> 突出显示我在另一个构造函数中调用的构造函数。我正在使用 C++11。有什么问题?
【问题讨论】:
-
什么编译器和选项?看起来你没有使用 C++11,即使你打算这样做。
-
可能是您的编译器不支持委托构造函数。您使用的是哪个编译器和版本?
-
我使用
g++ -std=c++0x,如果这是你的意思?并且版本是4.6 -
我不确定是否允许将对其他构造函数的调用与成员的直接初始化结合起来——如果你删除
b和c的 init 就可以了
标签: c++ c++11 constructor ctor-initializer