【发布时间】:2015-02-07 13:57:42
【问题描述】:
我有一个关于固有模板基类的错误的问题。我在子类源文件中收到此错误:
error: class ‘JobCalcReturn’ does not have any field named ‘JobMaster’
我的基类作为 *.h 文件:
template<class dataIn, class dataOut>
class JobMaster
{
public:
JobMaster() : JSONin("NOP"){};
JobMaster(const std::string &_JSONin) : JSONin(_JSONin){};
virtual ~JobMaster(){};
private:
static dataIn dataInObject;
static dataOut dataOutObject;
const std::string &JSONin;
static std::string JSONout;
virtual std::string dataInHandler(dataIn& dataInObject){...};
//Some more virutal methodes
};
我的子类标题:
class DataInClass{...};
class JobCalcReturn :public JobMaster<DataInClass, Poco::JSON::Array>
{
public:
JobCalcReturn(const std::string &_JSONin);
~JobCalcReturn();
private:
std::string dataInHandler(DataInClass& calcRatrunData);
};
我的子类源文件:
JobCalcReturn::JobCalcReturn(const std::string& _JSONin) : JobMaster(_JSONin){}
//here in the constructor i get the error
JobCalcReturn::~JobCalcReturn(){}
std::string JobCalcReturn::dataInHandler(DataInClass& calcRatrunData){...}
我用 Visual Studio 2013 写了这个并且没有错误,然后我用 eclipse 和 gcc c++ 编译器将系统切换到 Linux,我得到了这个错误。有人知道我为什么会收到此错误吗?
【问题讨论】:
标签: c++ templates inheritance