我有一个结构:
struct ListNode {
int val;
ListNode *next;
ListNode(int x) : val(x), next(NULL) {}
};
Run Code Online (Sandbox Code Playgroud)
我正在尝试初始化它:
ListNode* res = new ListNode();
ListNode* start = res;
Run Code Online (Sandbox Code Playgroud)
但我得到:
error C2512: 'ListNode' : no appropriate default constructor available
Run Code Online (Sandbox Code Playgroud)
为什么?
但我得到:
Run Code Online (Sandbox Code Playgroud)error C2512: 'ListNode' : no appropriate default constructor available
为什么?
当然你得到了这个错误,因为你没有声明一个默认的构造函数ListNode
.关于这一点,错误消息非常清楚.
一旦声明了自定义构造函数ListNode(int x);
,编译器就不再为您生成默认构造函数.
要解决此问题,请声明默认构造函数1
ListNode() : val(), next(NULL) {}
Run Code Online (Sandbox Code Playgroud)
或者召唤声明的人
ListNode* res = new ListNode(42);
Run Code Online (Sandbox Code Playgroud)
1) struct
表现出class
与此无关的行为(如果这应该导致你的混淆).