我有類似下面的代碼正確的方法:什麼是對付模棱兩可的類型轉換/轉換C++ 11
class Pair{
public:
Pair(const void *blob);
//...
int cmp(const std::string &key) const;
int cmp(const Pair &pair) const;
}
後來如果我這樣做:
Pair p = ...;
p.cmp("Hello");
它不會編譯,因爲從const char *
轉換是不明確的。
它可以轉化爲std::string
和cmp(std::string)
被調用,或...
它可以轉化爲Pair
和cmp(const Pair)
被調用。我不能做構造函數explicit
。
我試圖做的:
Pair(const char *blob) = deleted;
但我不能nullptr
建設類,我希望能夠這樣做。
作爲最終的溶液中,我定義下面的方法:
int cmp(const char *key) const{
return cmp(std::string{ key });
}
並能正常工作。
是否有更好的方法來處理這樣的類轉換?
「但是我不能用nullptr構造類,我希望能夠這樣做。」 - 讓你的一個構造函數採用'nullptr_t' –