gpt4 book ai didi

c++ - 如何使用模板类允许从 float 赋值给 int

转载 作者:塔克拉玛干 更新时间:2023-11-03 06:44:35 26 4
gpt4 key购买 nike

我有一个模板类,如下所示:

class Item
{
T Data;
public:
Item():
Data()
{}

void SetData(T nValue)
{
Data = nValue;
}

T GetData() const
{
return Data;
}

void PrintData()
{
cout << Data;
}
};

可以执行以下操作:

Item<int> item1;
Item<int> item2;
item1 = item2;

但是当我执行以下操作时,出现编译时错误:

Item<int> item1;
Item<float> item2;
item1 = item2;

很明显,编译器不允许这样做,因为 item1int 类型 但 item2 是float 类型

我怎样才能实现第二部分?

最佳答案

为此,您需要一个模板化赋值运算符,如下所示:

template <typename T>
class Item {
/* more */
public:
template <typename U>
Item &operator=(const Item<U> &ref)
{
Data = ref.Data;
return *this;
};
/* more */
};

除此之外,您可能需要或想要一个模板化的复制构造函数:

template <typename U>
Item(const Item<U> &ref):
Data(ref.Data)
{

};

这允许:

Item<int> foo;
Item<float> bar(foo);

关于c++ - 如何使用模板类允许从 float 赋值给 int,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23479133/

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