cpp文件中的C ++模板类方法实现

时间:2016-12-22 17:37:11

标签: c++ class templates implementation

我正在努力克服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文件时,狗屎才变得真实。有没有复杂的方法来解决这个问题?到目前为止我发现的所有东西看起来都有些粗糙!

感谢您的时间,请原谅我可怕的英语。

此致 希密尔

0 个答案:

没有答案