Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/oop/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++_Oop_Templates_Inheritance - Fatal编程技术网

C++ 当您需要从模板继承而不是从模板继承时,如何从模板类继承?

C++ 当您需要从模板继承而不是从模板继承时,如何从模板类继承?,c++,oop,templates,inheritance,C++,Oop,Templates,Inheritance,听起来很糟糕。。但是有 template < int ArrayLength, typename SomeValueType > class SomeClass{ SomeValueType SomeValue; SomeValueType SomeArray[ ArrayLength ]; ... }; templateclass-SomeClass{ SomeValue类型SomeValue; SomeValueType SomeArray[ArrayL

听起来很糟糕。。但是有

template < int ArrayLength, typename SomeValueType > class SomeClass{
    SomeValueType SomeValue;
    SomeValueType SomeArray[ ArrayLength ];
    ...
};
templateclass-SomeClass{
SomeValue类型SomeValue;
SomeValueType SomeArray[ArrayLength];
...
};
例如,如何定义一个扩展了
SomeClass
的类,即
SomeClass<20,int>

有点像


classmyclass:SomeClass<20,int>{…}正确方式?

如果您想要私有继承:

class MyClass : SomeClass < 20, int > //private by default!
{ 
    //...
};
class MyClass : public SomeClass < 20, int > 
{ 
    //...
};
classmyclass:SomeClass<20,int>//默认为私有!
{ 
//...
};
如果您想要公共继承:

class MyClass : SomeClass < 20, int > //private by default!
{ 
    //...
};
class MyClass : public SomeClass < 20, int > 
{ 
    //...
};
classmyclass:publicsomeclass<20,int>
{ 
//...
};

您知道默认情况下这是私有继承吗?使用类MaClass:publicsomeclass{…};拥有公共继承。如果可以通过
SomeClass*
删除
MyClass
,则还应向
SomeClass
添加虚拟析构函数,以确保执行任何其他特定于MyClass的销毁步骤。。。。