gpt4 book ai didi

c++ - 运算符 () 重载模板 C++

转载 作者:可可西里 更新时间:2023-11-01 18:28:54 25 4
gpt4 key购买 nike

我有一个简单的类,我想如下重载运算符

class MyClass
{
public:
int first;

template <typename T>
T operator () () const { return first; }
};

还有我的其他地方

MyClass obj;

int i = obj(); // This gives me an error saying could not deduce
// template argument for T

谁能帮我解决这个错误,非常感谢。谢谢。

编辑:

这与 operator() 有关,例如,如果我将函数替换为

    template <typename T>
T get() const { return first;}

它有效。感谢所有回复。

最佳答案

如果您希望函数调用是隐式的,那么您必须像这样将模板应用于类:

template <typename T>
class MyClass
{
public:
T first;

T operator () () const { return first; }
};

如果它应该转换为另一种类型,那么它应该是:

template <typename T>
class MyClass
{
public:
T first;

template <typename U>
U operator () () const { return (U)first; }
};

关于c++ - 运算符 () 重载模板 C++,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/992272/

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