在C++中,假設我具有在一個通用的結構包裹的消息的消息傳送系統:在一個接口傳遞的通用結構類型作爲參數
template<typename T>
struct Message
{
std::string Name;
T Data;
};
我還具有包括需要使用的功能的接口此結構的純粹通用版本:
class Interface
{
public:
virtual ~Interface() { }
virtual void Receive(Message& message) = 0;
virtual Message Send() = 0;
};
但是,Message
不再指定類型;例如Message<float>
和Message<std::string>
名稱類型。由於將要實施Interface
的類將需要捕獲不同的Message
,因此我不能只定義特定的類型。
我能想到解決這個問題的唯一方法是翻出模板並使用繼承,但隨後我會在我的代碼中散佈一些東西,如IntMessage
和BoolMessage
,這看起來非常醜陋。關於如何以我想要的方式做到這一點的任何想法?
「Message」的「純粹通用版本」有哪些屬性/方法?只是'名字'? –