class Newstring
{
public:
Newstring();
void inputChar ( char);
void display ();
int length ();
void concatenate (char);
void concatenate (Newstring);
bool substring (Newstring);
void createList ();
Node * getHead (); // error
private:
struct Node
{
char item;
Node *next;
};
Node *head;
};
我收到语法错误:缺少';'在'*'之前我的getHead函数的声明(是的,我想不出一个更好的名字)。此函数的目的是返回头指针。
答案 0 :(得分:3)
在使用之前声明节点。
答案 1 :(得分:2)
您必须在getHead();
之上声明Node结构class Newstring
{
public:
struct Node
{
char item;
Node *next;
};
Newstring();
void inputChar ( char);
void display ();
int length ();
void concatenate (char);
void concatenate (Newstring);
bool substring (Newstring);
void createList ();
Node * getHead (); // error
private:
Node *head;
};
答案 2 :(得分:2)
要回答Brandon关于将结构保密,或者在添加声明时保留当前代码,方法是:
class Newstring
{
struct Node; // here the declaration
public:
Newstring();
void inputChar ( char);
void display ();
int length ();
void concatenate (char);
void concatenate (Newstring);
bool substring (Newstring);
void createList ();
Node * getHead (); // error
private:
struct Node
{
char item;
Node *next;
};
Node *head;
};
答案 3 :(得分:1)
Node * getHead()
遇到getHead()时,编译器无法获得Node
的定义。
struct Node
{
char item;
Node *next;
};
在使用Node之前先定义它。
class Newstring
{
private:
struct Node
{
char item;
Node *next;
};
Node *head;
public:
Newstring(); ...
Node * getHead ();
答案 4 :(得分:1)
另一种方法是在Node
struct
来转发声明Node
:
void createList ();
struct Node * getHead ();
private:
struct Node
{
: