9
変換演算子を使用してクラスをstringとchar *にしようとしていますが、これは文字列を作成しようとすると曖昧な呼び出しエラーになります。C++演算子stringとchar *があいまいなエラーを起こす
class A
{
public:
A(){};
operator const char*() const { return "a" };
operator const string() const { return "b" };
}
と以下の主なプログラム:
int main()
{
A a;
string b = string(a);
return 0;
}
この原因あいまいなコールエラーのbasic_stringに(&) はまた、以下を試してみました:
class A
{
public:
A(){};
operator const char*() const { return "a" };
explicit operator const string() const { return "b" };
}
int main()
{
A a;
string b = static_cast<string>(a);
return 0;
}
は、私は、次のクラスがあると
これは同じエラーを引き起こします。私は両方の演算子を自分のコードに入れておく必要があります。どうすればいいのですか?
注:使用して、文字列B =作品が、私はaswell
ノート2動作するように(a)の形式の文字列を必要とする:明示的なkeyworkを使用しないとあなたはそれらの両方explicit
ようにする必要があり演算子=曖昧
@Sergeyここでローカル変数を見つけることはできませんか? –
[関連](https://stackoverflow.com/questions/3518145/c-overloading-conversion-operator-for-custom-type-to-stdstring) –
@πάνταῥεῖああ、はい、それはデータセグメントにコンパイルする必要があります。 – Sergey