gpt4 book ai didi

c++ - 模板实例和继承的转换错误

转载 作者:行者123 更新时间:2023-11-30 02:27:04 25 4
gpt4 key购买 nike

抱歉,如果之前有人问过这个具体问题。看起来很简单。

假设我有以下类 X

template<class T>
class X
{
public:
virtual X<T> DoStuff(const X<T>& arg) {
X<T> res;
//something with res
return res;
}
}

和Y类

class Y: public X<float>
{
//stuff
}

我主要做了以下事情:

Y var1;
Y var2;
Y var3 = var1.DoStuff(var2);
X<float> var4;
Y var3 = var4;

我收到“从 X 到非标量类型 Y 的转换,这两个任务都请求了。”

我如何实现我想要的,即使用类 Y 作为 X 的别名?

最佳答案

如果您只是想使用Y作为 X<float> 的别名,然后是以下之一:

typedef X<float> Y;  // Old school
using Y = X<float>; // If you want to be fancy and C++11'ish.

是最简单的解决方案。如果你想在 Y 中添加一些更方便的功能不过,您需要从 X<float> 添加一个构造函数

    Y(const X<float>& rhs) : X<float>(rhs) {}

这本身就足够了,但您可能希望直接从 X<float> 添加赋值运算符并移动两者的版本。

关于c++ - 模板实例和继承的转换错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42135317/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com