C++ C++;类本身不是基

C++ C++;类本身不是基,c++,class,inheritance,C++,Class,Inheritance,我不确定回答这个问题需要多少信息,所以如果需要更多信息,请告诉我 当我突然遇到以下消息时,我正在修改我编写的一个大型代码:错误:type'integer'不是'integer'的直接基。。我知道这是一个继承问题,但我不继承其他类 导致此问题的代码为 integer(const std::string & val, uint16_t base): integer(val.begin(), val.end(), base) {} 及 已经定义了 我需要做什么来解决这个问题 编辑:我用-st

我不确定回答这个问题需要多少信息,所以如果需要更多信息,请告诉我

当我突然遇到以下消息时,我正在修改我编写的一个大型代码:
错误:type'integer'不是'integer'的直接基。
。我知道这是一个继承问题,但我不继承其他类

导致此问题的代码为

integer(const std::string & val, uint16_t base): integer(val.begin(), val.end(), base) {}

已经定义了

我需要做什么来解决这个问题


编辑:我用-std=c++0x编译,根据答案,我应该能够编译,除非我的编译器是旧的:gcc 4.6.2我认为

你不能在不同构造函数的初始值设定项列表中调用同一类的构造函数(在c++03中)。但您可以相应地初始化成员:

integer(const std::string & val, uint16_t base): _start(val.begin())
                                                 _end(val.end())
                                                 _base(base)
{}

不允许像这样调用同一类的其他构造函数(C++11中有委托构造函数)。您需要初始化类的成员(就像您可能在其他构造函数中所做的那样)

编辑:


根据,委派构造函数是在GCC v4.7中实现的,看起来您正试图直接调用另一个构造函数。在C++03中不能这样做,但您:


您需要g++4.7或更高版本才能工作,4.6还不支持此功能,即使使用-std=c++0x,我在我的系统上对这两个版本都进行了测试。

它是(“委托构造函数| N1986 |否”),但是。

@calccrypto GCC 4.6不支持此功能。我认为是4.7。更新答案,可在gcc 4.7之后获得。
integer(const std::string & val, uint16_t base): _start(val.begin())
                                                 _end(val.end())
                                                 _base(base)
{}
class SomeType  {
    int number;

public:
    SomeType(int new_number) : number(new_number) {}
    SomeType() : SomeType(42) {}
};