C++ 隐式转换与多态性
非常直截了当的问题,我正在尝试使用多态参数进行隐式转换,有什么方法可以让它工作吗 main.cppC++ 隐式转换与多态性,c++,C++,非常直截了当的问题,我正在尝试使用多态参数进行隐式转换,有什么方法可以让它工作吗 main.cpp nickname nick("somenick"); client.send(nick_request(nick)); // original client.send(nick); // Implicit conversion from nickname to nick_request client.hpp virtual void send(const request & rq) n
nickname nick("somenick");
client.send(nick_request(nick)); // original
client.send(nick); // Implicit conversion from nickname to nick_request
client.hpp
virtual void send(const request & rq)
nick_request.hpp
class nick_request : public request
{
nick_request(const nickname & nick);
...
};
昵称.hpp
nickname(const std::string & name)
一种解决方案是为每种类型的“请求”编写一个重载,但这很繁琐,而且不符合多态性的要点。您可以在
昵称中编写一个转换函数(从昵称
到尼克请求
)
class nickname {
public:
nickname(const std::string & name) {}
operator nick_request() const { return nick_request(*this); }
};
看太棒了,我不知道这能做到@FranciscoAguilera它使编译器能够找到转换路径。你能解释一下这将如何处理多个参数吗?例如,如果nick_请求包含多个参数?@FranciscoAguilera如下返回nick_请求(*this,xxx,yyy,zzz)代码>?正确,其中xxx、yyy、zzz是与昵称(username、usermodes)类似的其他类。。。