簡體   English   中英

g ++的過載解析

[英]Overload Resolution with g++

我正在實現序列化類Serializable 此類具有以下方法簽名:

void serializeMember(Buffer& sb, const Serializable*& member) const;
void serializeMember(Buffer& sb, const int& member) const;
template<typename T>
  void deserializeMember(Buffer& sb, T*& member);

我有一個Baz派生類和另一個Bar派生類。 Bar有一個成員變量Baz* baz; Bar具有以下方法:

void deserialize(Buffer& buffer) {
  deserializeMember(buffer, baz);
}
void serialize(Buffer& buffer) const {
  serializeMember(buffer, baz);
}

當我執行代碼時,對序列化的調用將解析為serializeMember重載,並將int作為第二個參數。 就像我使該模板函數一樣,類似於deserializeMember deseralizeMember的調用可以正確解決。

為什么我的Serializable指針不能解析為正確的重載方法?

正確的簽名是:

void serializeMember(Buffer& sb, const Serializable* const& member) const;

由於serializeMemberBar的const方法,而baz是屬於Bar的指針,我們需要按值傳遞const指針,或將const指針作為const引用傳遞。 因此, const Serializable* const&

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM