衍生模板类的覆盖返回类型
Overriding return type of derived template class
如果我有一些抽象类 a 带有虚拟函数 clone 和模板类 b 继承 a 和Overrides clone ,我想使此函数返回类型 b<strong>)返回类型 a 。
我尝试了这个,但是编译器告诉我我无法返回抽象类:
class A
{
public:
virtual A Clone() const = 0;
};
template <typename T>
class B : public A
{
private:
T value;
public:
B<T> Clone() const override
{
return B<T>(value);
}
};
我相信这是不可能的在堆上。有没有办法做到这一点?(如果可能的话,我不想将指针写在哪里写克隆。)
注意:我遗漏了一些"噪声",例如构造函数等。
no,值无法执行此操作。值具有特定和固定的存储和类型。
您可以创建多态值类型,例如std::function
,但它仅将继承用作实现细节(最多)。
std::any
是一种几乎没有接口的多态值类型。根据内容大小,它使用SBO或堆。使用其他接口进行增强并不难。
相关文章:
- 如何获取std::result_of函数的返回类型
- 奇怪的结构&GCC&clang(void*返回类型)
- 如何建立使用模板函数的lambda函数的尾部返回类型
- 为什么与常规GCC不同,即使有"学究性错误",MinGW-GCC也能容忍丢失的返回类型
- 在没有定义返回类型的函数中返回布尔值,并将结果保存在无错误的char编译中-为什么
- 特征::矩阵<双精度,1,3> 结构类型函数中的返回类型函数
- 函数作为模板参数,是否对返回类型强制约束
- C++中函数的向量返回类型引发错误
- 使用不同的返回类型覆盖虚拟函数
- C++ 使用不同的返回类型覆盖虚拟函数
- 衍生模板类的覆盖返回类型
- 覆盖方法返回类型,在C 中使用不完整的派生类
- C 多重继承,虚拟方法覆盖问题和协变量返回类型
- 与基类不同的返回类型的C 覆盖功能
- 虚函数与它覆盖的函数的返回类型不协变
- 我可以在覆盖虚函数的返回类型中丢失"constness"吗?
- 是覆盖返回类型所需的指针-继承
- 变量返回类型上转换覆盖c++
- 尾随返回类型中的占位符是否覆盖初始占位符
- 返回类型与被覆盖的虚函数"MediaFactory :: FMediaDevice"的返回类型"MediaDevice*"不相同,也不协变