配列の要素の1つを別のオブジェクトに設定しようとしています。しかし、コンパイラは=
演算子を削除しています。なぜここでそれをやっているのですか?そして、私はどうすればそれを回避できますか?=演算子は削除されていますが、どうすれば回避できますか?
例コード:
struct IntContainer
{
IntContainer(const int value) :
value(value)
{
}
IntContainer() :
IntContainer(0)
{
}
const int value;
};
int main(int argc, char** argv)
{
IntContainer intContainers[3];
IntContainer newIntContainer(420);
intContainers[0] = newIntContainer; // <-- Causes compiler error
return 0;
}
このスニペットをコンパイルするとき、私は取得していますコンパイラエラーがある:
main.cpp: In function 'int main(int, char**)':
main.cpp:23:24: error: use of deleted function 'IntContainer& IntContainer::operator=(const IntContainer&)'
intContainers[0] = newIntContainer; // <-- Causes compiler error:
^~~~~~~~~~~~~~~
main.cpp:2:8: note: 'IntContainer& IntContainer::operator=(const IntContainer&)' is implicitly deleted because the default definition would be ill-formed:
struct IntContainer
^~~~~~~~~~~~
main.cpp:2:8: error: non-static const member 'const int IntContainer::value', can't use default assignment operator
あなたは何かを 'const'変数に代入しますか? – NathanOliver
@ NathanOliverキャストする:D – UKMonkey
コンストラクタの値に代入していませんか? – gromit190