В коде ниже я полностью понимаю, что в тесте класса есть член CONST, что означает, что этот участник не может быть назначен позже, следовательно, оператор назначения не работает, а также я думаю, что
оператор назначения тоже не работает. Сообщение? < /p>
#include
class Test {
std::vector vi;
const size_t isize;
public :
Test(std::vector i) :vi{ i }, isize{vi.size()}
{
}
Test() = delete;
~Test() = default;
Test(const Test&) = delete;
Test(Test&&) = default;
Test& operator=(const Test&) = default;
Test& operator=(Test&&) = default; };
int main() {
std::vector testvector;
std::vector k{ 1 };
testvector[0] = std::move(Test(k));
std::cout
Сообщение об ошибке от vc ++ или g ++: < /p>
1>: error C2280: 'Test &Test::operator =(const Test &)': attempting to reference a deleted function
1>: message : see declaration of 'Test::operator ='
1>: message : 'Test &Test::operator =(const Test &)': function was implicitly deleted because 'Test' has a data member 'Test::isize' of const-qualified non-class type
1>: see declaration of 'Test::isize'
< /code>
Примечание: эта ошибка уходит, удаляя const из участника isize. < /p>
Редактировать:
Спасибо @g.m за то, что сообщение об ошибке Clang более полезно здесь
rest rese roundt roundt and round на других материалах.
:12:11: warning: explicitly defaulted copy assignment operator is implicitly deleted [-Wdefaulted-function-deleted]
12 | Test& operator=(const Test&) = default;
| ^
:4:18: note: copy assignment operator of 'Test' is implicitly deleted because field 'isize' is of const-qualified type 'const size_t' (aka 'const unsigned long')
4 | const size_t isize;
| ^
:12:36: note: replace 'default' with 'delete'
12 | Test& operator=(const Test&) = default;
| ^~~~~~~
| delete
Подробнее здесь: https://stackoverflow.com/questions/794 ... oth-gcc-vc
Компилятор дает неправильное сообщение, или я что -то здесь упускаю и GCC и VC ++ [закрыто] ⇐ C++
Программы на C++. Форум разработчиков
1740856630
Anonymous
В коде ниже я полностью понимаю, что в тесте класса есть член CONST, что означает, что этот участник не может быть назначен позже, следовательно, оператор назначения не работает, а также я думаю, что
оператор назначения тоже не работает. Сообщение? < /p>
#include
class Test {
std::vector vi;
const size_t isize;
public :
Test(std::vector i) :vi{ i }, isize{vi.size()}
{
}
Test() = delete;
~Test() = default;
Test(const Test&) = delete;
Test(Test&&) = default;
Test& operator=(const Test&) = default;
Test& operator=(Test&&) = default; };
int main() {
std::vector testvector;
std::vector k{ 1 };
testvector[0] = std::move(Test(k));
std::cout
Сообщение об ошибке от vc ++ или g ++: < /p>
1>: error C2280: 'Test &Test::operator =(const Test &)': attempting to reference a deleted function
1>: message : see declaration of 'Test::operator ='
1>: message : 'Test &Test::operator =(const Test &)': function was implicitly deleted because 'Test' has a data member 'Test::isize' of const-qualified non-class type
1>: see declaration of 'Test::isize'
< /code>
Примечание: эта ошибка уходит, удаляя const из участника isize. < /p>
Редактировать:
Спасибо @g.m за то, что сообщение об ошибке Clang более полезно здесь
rest rese roundt roundt and round на других материалах.
:12:11: warning: explicitly defaulted copy assignment operator is implicitly deleted [-Wdefaulted-function-deleted]
12 | Test& operator=(const Test&) = default;
| ^
:4:18: note: copy assignment operator of 'Test' is implicitly deleted because field 'isize' is of const-qualified type 'const size_t' (aka 'const unsigned long')
4 | const size_t isize;
| ^
:12:36: note: replace 'default' with 'delete'
12 | Test& operator=(const Test&) = default;
| ^~~~~~~
| delete
Подробнее здесь: [url]https://stackoverflow.com/questions/79478074/is-compiler-giving-wrong-message-or-i-am-missing-something-here-both-gcc-vc[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия