以下は、マップの値として使用されるクラスです。
class Book
{
int m_nId;
public:
// Book() { } <----- Why is this required?
Book( int id ): m_nId( id ) { }
};
main()内:
map< int, Book > mapBooks;
for( int i = 0; i < 10; ++i )
{
Book b( i );
mapBooks[ i ] = b;
}
エラーの原因となるステートメントは次のとおりです。
mapBooks[ i ] = b;
デフォルトのコンストラクターを追加しても、エラーは表示されません。しかし、なぜ必要なのかわかりません。誰か説明できますか?を使用insert()
しても問題は発生しません。
ちなみに、私はVisual C++2008を使用してコンパイルしています。