我正在尝试创建一个带有函数的基类,这些函数在继承时返回子类的实例。我正在尝试的摘要版本:
A.H:
#include <string>
template <typename Derived>
class A {
public:
A<Derived>();
Derived Append(wchar_t the_char) const;
protected:
std::wstring some_string;
} // class A
A.cpp:
#include "A.h"
A<class Derived>::A() {}
Derived A::Append(wchar_t the_char) const
{
Derived d(some_string);
d.some_string += the_char;
return d;
}
B.h:
class B : public A<B>
{
public:
B();
};
B.cpp:
B::B() : A() {}
我希望能够做到的事情如下:
B theObj;
theObj = theObj.Append(L'h');
但是,我无法找到一种组织代码来实现这一目标的方法。我不确定是否有某种形式的前瞻声明需要在这里或什么。试了几件但没有运气。想法?
答案 0 :(得分:2)
您在寻找这种语法吗?
template<class Derived>
Derived A<Derived>::Append(wchar_t the_char) const
{
Derived d(some_string);
d.some_string += the_char;
return d;
}
将它放在cpp文件中不会有太大作用。您最好将其添加到头文件中,或者创建一些其他可以包含的文件(MS有时会调用.inl)以使其可供用户访问。