• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:const参照メンバを含む要素のvector)

C++ vector with const reference member

このQ&Aのポイント
  • Is it possible to use a vector containing objects with const reference members?
  • When compiling with bcc32, an error occurs in _algobase.h line 145: the compiler cannot create 'operator=' for the class hoge (function _STL::hoge * __copy<hoge *,hoge *,int>(hoge *,hoge *,hoge *,const random_access_iterator_tag &,int *))
  • By the way, if the line v.clear() is commented out, the compilation succeeds and execution can be done without any issues. It also compiles and runs fine if pop_back() is used instead of clear(). Is this a compiler bug? Shouldn't we do something like this in the first place?

質問者が選んだベストアンサー

  • ベストアンサー
回答No.4

> ん?const参照に代入・・・・? > どうやってやるんでしょう? 適切な代入が定義できないのであれば、vectorの要素としては適さないってことです。

ICE_FALCON
質問者

お礼

回答ありがとうございます。 なるほど、じゃconstポインタでやりましょうかね・・・ 代入できますし。

その他の回答 (3)

回答No.3

> どっちがいいんでしょうね 何に対する"よさ"を訊かれてるのかわからんので答えようがありませんです。

  • Tacosan
  • ベストアンサー率23% (3656/15482)
回答No.2

そういえばコピーコンストラクタの引数って const 参照にするのと const volatile 参照にするのとではどっちがいいんでしょうね>#1. 「volatile なインスタンスなんか作らないからどっちでもいっしょ」といえば, まあその通りなんですけどちょっと気になったので.

ICE_FALCON
質問者

お礼

?私のレベルでは解りませんが、 必要なら両方用意するんじゃないんでしょうか?

回答No.1

vectorの要素となるにはコピー: hoge& operator=(const hoge&) が必要です。 それさえちゃんと実装すれば。

ICE_FALCON
質問者

お礼

回答ありがとうございます。 なるほどvectorの実装見たこと無いけど、 clear()では代入使っているんですね。 Warning見て気付かなかった・・・・。 ありがとうございました。

ICE_FALCON
質問者

補足

ん?const参照に代入・・・・? どうやってやるんでしょう?

関連するQ&A

専門家に質問してみよう