【发布时间】:2012-02-11 20:35:14
【问题描述】:
我有一个如下所示的基类:
template<typename T>
class Base
{
public:
Base(int someValue);
virtual T someFunc() =0;
};
template<typename T>
Base<T>::Base(int someValue)
{}
然后是以下内容:
#include "base.hpp"
class Foo
: public Base<Foo>
{
public:
Foo(int someValue);
virtual Foo someFunc();
};
Foo::Foo(int someValue)
: Base(someValue)
{}
我从 gcc 4.2.1 收到以下错误。
错误:“Foo”类没有任何名为“Base”的字段
我应该提到这在我运行 gcc 4.6.2 的 Fedora 机器上编译得很好。在我的 os x Lion 机器上编译时出现此错误。
编辑
问题似乎是我在调用构造函数时没有在 Foo 类中指示模板的类型。以下修复了os x中的错误。
: Base<Foo>(someValue, parent)
编辑
是的,这确实看起来像一个错误。我之前提到的修复了 os x 下的错误,并且代码在 Fedora 中使用该修复程序编译得很好。会去看看os x中的gcc有没有更新。
【问题讨论】:
标签: c++ qt inheritance compiler-errors g++