非常直截了当的问题,我试图使用多态参数进行隐式转换,有没有办法让它工作?
的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)
nick_request.hpp
class nick_request : public request
{
nick_request(const nickname & nick);
...
};
nickname.hpp
nickname(const std::string & name)
一种解决方案是为每种类型的“请求”写出一个重载,但这很乏味并且会破坏多态性的重点。
答案 0 :(得分:2)
您可以在nickname
中编写转换函数(从nick_request
到nickname
)。
class nickname {
public:
nickname(const std::string & name) {}
operator nick_request() const { return nick_request(*this); }
};