Компилятор дает неправильное сообщение, или я что -то здесь упускаю и GCC и VC ++ [закрыто]C++

Программы на C++. Форум разработчиков
Ответить Пред. темаСлед. тема
Anonymous
 Компилятор дает неправильное сообщение, или я что -то здесь упускаю и GCC и VC ++ [закрыто]

Сообщение 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


Подробнее здесь: https://stackoverflow.com/questions/794 ... oth-gcc-vc
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «C++»