编译器错误 C2534

“identifier”:构造函数无法返回值

构造函数不能包含具有表达式的 return 语句(即使表达式的类型为 void)。 这不同于允许 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 语句,或者省略返回表达式(如果需要提前返回)。