我正在努力克服C ++模板概念。 我所拥有的是这样的:
abstractClass.h:
namespace a {
namespace b {
template <typename RETURNTYPE, typename DATATYPE>
class AbstractClass {
protected:
RETURNTYPE rtype;
DATATYPE dtype;
std::size_t countValues;
public:
explicit AbstractClass(DATATYPE _dtype, size_t _countValues):
rtype(0),
dtype(_data),
countValues(_countValues) {
}
virtual void process() = 0;
};
} // namespace worker
} // namespace eetneon
derivedClass.h
#include "abstractClass.h"
namespace a {
namespace b {
template <typename RETURNTYPE, typename DATATYPE>
class DerivedClass : public AbstractClass<RETURNTYPE, DATATYPE> {
public:
DerivedClass(DATATYPE _data, size_t _countValues):
AbstractClass<RETURNTYPE, DATATYPE>(_data, _countValues) {
}
void process() override;
};
} // namespace worker
} // namespace eetneon
现在我的问题是:是否可以在* .cpp文件中实现void process()方法,或者我是否必须将实现放在头文件中,这样编译器就可以看到它(我读过类似的东西)最近,因为当我试图将实现内容远离* .h文件时,狗屎才变得真实。有没有复杂的方法来解决这个问题?到目前为止我发现的所有东西看起来都有些粗糙!
感谢您的时间,请原谅我可怕的英语。
此致 希密尔