クラスのインデクサ演算子を作成する私は、C++でクラスを作成します。このクラスはコレクションで管理する必要があります。 OK、何の問題は、私はもちろん、[]演算子を使用したいだろうが、この場合には、私の願いは、インデックスのない位置ではありませんが、名前で==>という文字列インデクサーを使用することを意味します。[]許可の文字列パラメータ(文字列インデックス)
この種の何かが私のコンパイラにとても素敵ではないようだ。
// In hpp
class myclass {
...
...
std::string operator[](const std::string& name);
}
// In cpp
std::string myclass::operator[](const std::string& name) {
...
}
// In main
myclass m;
std::string value = m["Name"];
コンパイラは、オペレータ[constのcharは[5]]が存在しないので、彼はこの問題を解決することができないことを私に伝えます。 OK OK 私はこれを理解することができました... m ["Name"]を呼び出すことによって、コンパイラはそれを考えています。文字列ではなくchar *を受け入れる演算子を呼び出そうとしています... ok オペレータ[] char *をパラメータとして使うことはできません。
は、誰かがどのようにベストプラクティスのようにC++でこのような結果を達成するために教えてもらえますか?私は ありがとうございました...それは文字列ではなく整数によってインデックスに共通する問題であると仮定します。
あなたは 'のstd ::文字列値= mの[STD ::文字列( "名前")]しようとすると何が起こるか;' – SingleNegationElimination
を、私は、コンパイラは彼女が – Inverse
を*であるかなり確信しています@ TokenMacGuy、std :: stringにはchar *を取るctorがあるので、それは問題ではありません。 – Johnsyweb