C++ 如何定义可继承的模板特定类型?
我的问题可能没有我想的那么清楚。 让我解释一下。 我有一个抽象的母类M,还有很多子类C1,C2,…Cn。 在每个子级中,我必须定义如下模板类型:C++ 如何定义可继承的模板特定类型?,c++,templates,inheritance,C++,Templates,Inheritance,我的问题可能没有我想的那么清楚。 让我解释一下。 我有一个抽象的母类M,还有很多子类C1,C2,…Cn。 在每个子级中,我必须定义如下模板类型: class Child1 : public Mother { public: typedef AnotherTemplateClass<Child1,int> Type1_C1; typedef AnotherTemplateClass<Child1,bool> Type2_
class Child1 : public Mother
{
public:
typedef AnotherTemplateClass<Child1,int> Type1_C1;
typedef AnotherTemplateClass<Child1,bool> Type2_C1;
typedef AnotherTemplateClass<Child1,unsigned> Type3_C1;
void DoSomething(Type1_C1 a, Type2_C1 b, Type3_C1);
};
我知道这是不可能做到的
错误:在顶层无效使用“this”
但是有什么语法可以回答这个问题吗
这可能吗?CRTP可能会有帮助:
模板
班级儿童:公共母亲
{
公众:
typedef另一个模板类Type1_C1;
typedef另一个模板类Type2_C1;
typedef另一个模板类Type3_C1;
可能:
//无效剂量测量(类型1_C1 a、类型2_C1 b、类型3_C1);
};
然后
class Child1:公共ChildCrtp
{
公众:
无效剂量测量(类型1_C1 a、类型2_C1 b、类型3_C1);
};
什么是回调
?请提供一个。回调只是一个模板类。我更改了它的名字,让你们不要误会。@FORMERLYKNOWNAS463035818:我在CRTP中保留了母亲
继承权。哦,很抱歉忽略了这一点。这是一个如此普遍的误解,以至于我没有仔细阅读就惊慌失措
class Mother
{
public:
typedef AnotherTemplateClass<this,int> Type1_M;
typedef AnotherTemplateClass<this,bool> Type2_M;
typedef AnotherTemplateClass<this,unsigned> Type3_M;
};
class Child1 : public Mother
{
void DoSomething(Type1_M a, Type2_M b, Type3_M c);
};