为了减少重复--不需要求助于#define--我想做以下几件事:
template <class T>
class T final: public Base
{
public:
T();
virtual ~T();
private:
void method1(T const& that);
const T* method2(char const*); // was pure-virtual in Base
};一方面,我担心这是不允许的,因为上面的模板没有自己的名称可以通过以下方式调用它:
typedef ???<DerivedFOO> DerivedFOO;但另一方面,我知道C++模板本身就是一种图灵完整的语言,所以也许有什么方法可以做到这一点,而不是太麻烦?
#define是最不模糊的方式来满足您的需求”将被我接受,如果这是最后最令人信服的答案。发布于 2017-03-24 20:43:57
这样做能满足你的要求吗?
enum NAMES
{
NAME1,
NAME2,
....
};
template<int Name>
class Derived : public Base
{
...
};并将用作:
Derived<NAME1> a;https://stackoverflow.com/questions/43008696
复制相似问题