Поделиться через


Ошибка компилятора C2534

"идентификатор": конструктор не может возвращать значение

Конструктор не может содержать return оператор с выражением (даже если выражение имеет тип void). Это отличается от обычной функции, возвращающей пустоты, где разрешено выражение возвращаемого типа void . Однако использование инструкции return без выражения допускается для раннего возврата в конструкторе.

Следующий пример приводит к возникновению ошибки C2534:

// C2534.cpp
// compile with: /c
void void_func() {}

class A {
public:
   int i;
   A() {
      return i;   // C2534
      return 123;   // C2534
      return (void)0;   // C2534
      return void_func();   // C2534

      return;   // OK
   }
};

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