0

私のプロジェクトでは単純なハッシュ テーブルが必要であり、ドキュメントから、CMapStringToStringがまさに私が望むものであるように思われます。ただし、クラスに新しいフィールドを追加するだけで、他の方法でアクセスしていない場合でも、エラー メッセージをスローするのに十分であることがわかりました。

 ... other class members
 CMapStringToString myMap;

これを行うだけで、次のエラーが発生します。

... 
error C2248: 'CObject::CObject' : cannot access private member declared in 
class 'CObject'

myMapを参照するものはまだどこにもありません。

エラーのファイルと行番号は、1503 行目の "afxcoll.h" です。これは、CMapStringToString クラス定義の右中かっこです。

ここで何が問題なのか誰か知っていますか?このクラスのサンプル コードはどこにありますか?


誰かが以前に、コピー コンストラクターがプライベートであり、マップを使用してクラス用に独自のコピー コンストラクターを作成することを提案したことを示唆する回答を投稿していました。これは機能せず、投稿した人は実際に自分の回答を削除しました(私がそれを読んだ後、返信する前に)。


最終的にCMapStringToStringから派生したクラスを作成し、そのコピー コンストラクターを作成しました。これは以前の提案とまったく同じではなく、うまくいきました。ご提案いただきありがとうございます。彼らは正確に正しいとは言えなかったかもしれませんが、少なくとも私を正しい方向に導いてくれました。

4

1 に答える 1

0

クラスにコピー コンストラクターがなく、インスタンスをどこかにコピーしようとしている可能性がありますか? ほとんどの場合、これでエラーは発生しませんが、CMapStringToStringクラスの基になる型Objectが必要になる可能性があります。

于 2012-11-10T12:26:46.083 に答える