【发布时间】:2017-01-26 04:53:52
【问题描述】:
我是 C++ 的初学者。最近在练习写一个链表的时候,我尝试使用我的类构造函数的初始化列表来给head->next赋值NULL。
在类构造器中,它警告我的箭头运算符“期望一个'('或'{'”。为什么会出现这样的错误?(我知道我可以在块中初始化类成员,但为什么不能' t 我用这个指针来做这个?) 谢谢!
这是我的链表头文件:
链表.h
#include <iostream>
using namespace std;
struct node {
int val;
node *next;
};
class linkedlist {
private:
node *head;
int listlen;
public:
linkedlist();
void insert(node*, int);
void del(node*);
void reverse(node*);
void traverse(node*);
int random();
~linkedlist();
};
这是我的类构造函数:
linkedlist.cpp
#include "linkedlist.h"
#include <iostream>
linkedlist::linkedlist() :listlen(0), head->next(NULL){}
【问题讨论】:
-
两个问题:首先
head没有初始化。其次,初始化列表中不能有表达式。 -
@Someprogrammerdude 常量表达式呢?
-
为什么?因为这就是语言的设计方式。 (大概初始化列表一直用于初始化对象本身,而不是它的成员可能指向的其他对象。)
-
@JoelCornett 可以将非常量表达式作为 initializer,作为用于初始化成员变量的值。但是对于要初始化的变量,不允许有通用表达式(如
head->next)。 -
@Someprogrammerdude 哦,你知道我完全看错了构造函数。我明白了。
标签: c++ pointers linked-list class-members initialization-list