C++类不是它自己的基础

cal*_*pto 9 c++ inheritance class

我不确定需要多少信息来回答这个问题,所以请告诉我是否需要更多信息.

当我突然遇到这条消息时,我正在修改我编写的大代码:error: type 'integer' is not a direct base of 'integer'.我知道它的继承问题,但我不继承其他类.

导致此问题的代码是

integer(const std::string & val, uint16_t base): integer(val.begin(), val.end(), base) {}
Run Code Online (Sandbox Code Playgroud)

integer(iterator start, iterator end, uint16_t base) 
Run Code Online (Sandbox Code Playgroud)

已定义.

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

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

Fle*_*exo 19

看起来你正试图直接调用另一个构造函数.你不能在C++ 03中做到这一点,但你可以在C++ 11中做到这一点:

class SomeType  {
    int number;

public:
    SomeType(int new_number) : number(new_number) {}
    SomeType() : SomeType(42) {}
};
Run Code Online (Sandbox Code Playgroud)

你需要g ++ 4.7或更高版本来工作,4.6还不支持这个功能,即使是-std = c ++ 0x,我在我的系统上测试了两个版本.

  • @calccrypto GCC 4.6不支持此功能.我认为是4.7. (3认同)