Lưu ý
Cần có ủy quyền mới truy nhập được vào trang này. Bạn có thể thử đăng nhập hoặc thay đổi thư mục.
Cần có ủy quyền mới truy nhập được vào trang này. Bạn có thể thử thay đổi thư mục.
'identifier' : no appropriate default constructor available
A default constructor, a constructor that requires no arguments, is not available for the specified class, structure, or union. The compiler supplies a default constructor only if no user-defined constructors are provided.
If you provide a constructor that takes a non-void parameter, and you want to allow your class to be created with no parameters (for example, as the elements of an array), you must also provide a default constructor. The default constructor can be a constructor with default values for all parameters.
Example
A common cause of error C2512 is when you define a class or struct constructor that takes arguments, and then you attempt to declare an instance of your class or struct without any arguments. For example, struct B
below declares a constructor that requires a char *
argument, but not one that takes no arguments. In main
, an instance of B is declared, but no argument is supplied. The compiler generates C2512 because it can't find a default constructor for B.
// C2512.cpp
// Compile with: cl /W4 c2512.cpp
// C2512 expected
struct B {
B (char *) {}
// Uncomment the following line to fix.
// B() {}
};
int main() {
B b; // C2512 - This requires a default constructor
}
You can fix this issue by defining a default constructor for your struct or class, such as B() {}
, or a constructor where all the arguments have default values, such as B (char * = nullptr) {}
.