引用符で囲まれた文字列がboolメソッドのシグネチャとstd :: stringの前に一致するのはなぜですか?
// Method 1
void add(const std::string& header, bool replace);
//Method 2
void add(const std::string& name, const std::string& value);
次のコードは、方法2の代わりにメソッド1を呼び出すことになります。
something.add("Hello", "World");
次のような別のメソッドを作成しました。
//Method 3
void MyClass::add(const char* name, const char* value) {
add(std::string(name), std::string(value));
}
それは働いた。したがって、メソッドが "引用符付き文字列"を受け入れると、次の順序で一致します。
const char*
bool
std::string
引用符で囲まれた文字列を扱う理由std::string
の前にbool
として?これは通常の行動ですか?私はこのプロジェクトのためのまともな量のコードを書いており、間違ったメソッドの署名が選択されていることで他に何の問題もなかった...
これはそれです。私は一度この問題があり、それは私を混乱させましたが、2番目のパラメータはconst char *であり、それはブール値に変換されます。 – GManNickG