Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/templates/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 如何定义可继承的模板特定类型?_C++_Templates_Inheritance - Fatal编程技术网

C++ 如何定义可继承的模板特定类型?

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_

我的问题可能没有我想的那么清楚。 让我解释一下。 我有一个抽象的母类M,还有很多子类C1,C2,…Cn。 在每个子级中,我必须定义如下模板类型:

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);
};