Нельзя инициализировать POD-объект с помощью агрегатного инициализатора — КиберПедия 

Двойное оплодотворение у цветковых растений: Оплодотворение - это процесс слияния мужской и женской половых клеток с образованием зиготы...

Наброски и зарисовки растений, плодов, цветов: Освоить конструктивное построение структуры дерева через зарисовки отдельных деревьев, группы деревьев...

Нельзя инициализировать POD-объект с помощью агрегатного инициализатора

2022-10-05 27
Нельзя инициализировать POD-объект с помощью агрегатного инициализатора 0.00 из 5.00 0 оценок
Заказать работу

Cannot init object of POD type with aggregate initializer

Инициализировать объекты классовых типов с помощью агрегатного инициализатора можно, только если они являются POD структурами. POD структуры не должны содержать конструктов, деструкторов, виртуальных функций членов и членов ссылочного типа, т.е. представляют собой простые структуры С. Для инициализации объектов классового типа с конструкторами всегда вызывайте конструктор.

struct A { int a; A(){} }; A a = { 1 };

FEC00183 ERROR

(старый стиль C++) размер массива для 'delete'

(old C++ style) array size for 'delete'

Предварительные версии Стандарта С++ требовали, что бы размер массивов явно указывался в операции 'delete[]', однако в окончательная версия Стандарта вычисление размера удаляемого массива возложено на компилятор и явное указание размера удаляемого массива запрещено. Компилятор обеспечивает ключ совместимости с предыдущими версиями Стандарта -Xo, когда эта ошибка выдается как предупреждение.

void f(char* pc, int с) { delete[с] pc; }

FEC00184 ERROR

Функция типа 'void' не может возвращать значение

Void function cannot return a value

Объявление функции с типов возвращаемого значения 'void' говорит от том, что данная функция ничего не возвращает, поэтому возвращать значения из таких функций нельзя. Возврат из функции без возвращения значения осуществляется оператором 'return' без аргумента.

void f() { return 1; }

FEC00186 ERROR

Нельзя применять операцию 'new' для ссылочных типов

Cannot apply 'new' to a reference type

Так как ссылка не является объектом, а является альтернативным именем для уже существующего объекта то ссылка не может быть создана с помощью оператора 'new'. Возможно лучше использовать указатель, его можно создавать с помощью оператора 'new'. См. 5.3.4 [1]

int* f() { typedef int& rint; return new rint; }

FEC00187 ERROR

Функция '%s' должна возвращать значение

Function '%s' should return a value

Функция объявлена как возвращающая значение, однако по одному или нескольким возможным путям выполнения функция не возвращает значения. Если Вы уверены, что выполнение не может пойти по пути, в котором нет возвращаемого значения, то игнорируйте предупреждение.

int f() { }

FEC00188 ERROR

Русское сообщение

Невозможно инициализировать массив в 'new'

Так как не существует способа указать инициализирующие значения для всех элементов массива выделяемого с помощью оператора 'new[]' то инициализация массивов запрещена. Если элементы массива имеют тип определяемыми пользователем, то для каждого элемента массива будет вызываться конструктор по умолчанию.

int* p = new int[10](1);

FEC00190 ERROR

Невозможно найти соответствие для вызова '%s'

Cannot find match for call '%s'

Существует несколько совместно используемых функций, однако аргументы вызова не подходят для вызова ни одного из них (или невозможно найти лучшую функцию). Проверьте аргументы вызова и прототипы совместно используемых функций.

void f(void* pv); void f(int* pi); void g(int i) { f(i); }

FEC00191 ERROR

Неоднозначность между '%s' и '%s'

Ambiguity between '%s' and '%s'

В двух базовых классах присутствуют члены с одинаковыми именами, поэтому при обращении к этому имени, как из производного класса, так и вне производного класса, возникает неоднозначность. Эту неоднозначность можно снять путем явной квалификации имени.

class A { public: int a; }; class B { public: int a; }; class C: public A, protected B { void f(C* p) { a = 5; // ambiguity A::a or B::a } };

FEC00192 ERROR

Рассогласование типов в параметре %d при вызове '%s'

Type mismatch in parameter %d in call to '%s'

Тип n-го аргумента при вызове функции не соответствует ожидаемому типу и не преобразовывается в него с помощью неявных преобразований типа. Проверьте тип n-го аргумента при вызове функции, если необходимо вставьте явное преобразование типов.

void f(void* pv); void g(int i) { f(i); }

FEC00193 ERROR

Неверное число параметров в вызове '%s'

Extra or missing parameters in call to '%s'

Существует несколько совместно используемых функций, однако число аргументов вызова не подходят для вызова ни одной из них. Проверьте число аргументов вызова и прототипы совместно используемых функции.

void f(void* pv); void f(int* pi); void g() { f(); }

FEC00194 ERROR

Недопустимый тип '%s' аргумента шаблона

Illegal type '%s' of template argument

Нетиповой аргумент шаблона не соответствует типу параметра шаблона и неявно не преобразуется в него.

template<void*> class A {}; int i; A<&i> ad;

FEC00195 ERROR

Левый операнд операции '.' или '.*' должен иметь классовый тип

Class required on left side of '.' or '.*' operator

Левый операнд для операций выбора члена должен иметь классовый тип. Убедитесь что левый операнд классового типа.

void f(int i) { i.x = 5; }

FEC00196 ERROR

Левый операнд операции '->' или '->*' должен иметь тип указателя на класс

Pointer to class required on left side of '->' or '->*' operator

Левый операнд для операций выбора члена по указателю на класс должен либо иметь тип указатель на класс либо перегружать соответствующий оператор. Перегруженный оператор должен в свою очередь возвращать тип, который либо перегружает тот же оператор либо является указателем на класс.

void f(int i) { i.x = 5; }

FEC00197 ERROR

'%s' не является членом '%s'

'%s' is not a member of '%s'

В 'namespace' или 'class' нет члена с таким именем. Проверьте объявление 'namespace', 'class' или имя члена.

class A { }; void A::f();

FEC00198 ERROR

Недоступный базовый класс '%s', базовый класс описан также в '%s'

Inaccessible base '%s'; base is also defined in '%s'

Предупреждение неоднозначный непосредственный базовый класс недоступен, так существует другой непосредственный базовый класс, у которого этот класс базовый. Не наследуйте класс от недоступного базового класса, так как в результирующем классе он уже есть.

class A {}; class B: public A {}; class C: public A, public D {};

FEC00199 ERROR

Невозможно повторно объявить функцию '%s' как статическую

Cannot redeclare function '%s' as static

FEC00200 ERROR

Рассогласование типов в повторном объявлении '%s'

Type mismatch in redeclaration of '%s'

Тип объекта или функции в первом объявлении не соответствует типу во втором объявлении/определении. Проверте типы в объявлениях.

class A { void f(); }; int A::f() { return 0; }

FEC00201 ERROR

Невозможно найти конструктор по умолчанию для инициализации элемента массива типа '%s'

Cannot find default constructor to initialize array element of type '%s'

FEC00202 ERROR

Невозможно найти конструктор в '%s'

Cannot find a constructor in '%s'

FEC00203 ERROR

Использование типа '%s' в операции 'sizeof' не допускается

Type '%s' is not allowed in 'sizeof' operator

Тип или объект этого типа не могут быть использованы в качестве операнда операции 'sizeof'. Не применяйте операцию 'sizeof' к типам или объектам незавершенного или функционального типа, перечислимого типа до описания членов перечисления, а также к l-значениям, ссылающимся на битовые поля. См. 5.3.3 [1]

int f() { // the 'void' type is an incomplete type (3.9.1 [9]) return sizeof(void); }

FEC00204 ERROR

' операция %s' объявлена вне класса

'operator %s' declared outside a class

FEC00205 ERROR

Операция '%s' объявлена вне класса

Operator '%s' declared outside a class

FEC00207 ERROR


Поделиться с друзьями:

Механическое удерживание земляных масс: Механическое удерживание земляных масс на склоне обеспечивают контрфорсными сооружениями различных конструкций...

Общие условия выбора системы дренажа: Система дренажа выбирается в зависимости от характера защищаемого...

Эмиссия газов от очистных сооружений канализации: В последние годы внимание мирового сообщества сосредоточено на экологических проблемах...

Биохимия спиртового брожения: Основу технологии получения пива составляет спиртовое брожение, - при котором сахар превращается...



© cyberpedia.su 2017-2024 - Не является автором материалов. Исключительное право сохранено за автором текста.
Если вы не хотите, чтобы данный материал был у нас на сайте, перейдите по ссылке: Нарушение авторских прав. Мы поможем в написании вашей работы!

0.02 с.