我的类变量之一(它是指向另一个类的指针)给出了没有类型的错误。经过几天的思考就能弄清楚,有人看到错误了吗?也出于某种原因
r->setright(NULL)
使程序崩溃
#include "gridnode.h"
#include "grid.h"
#include "basenode.h"
class grid
{
public:
grid();
void print();
protected:
gridnode *head;//error of no type here
};
#endif // GRID_H
和我的节点类
class gridnode:public basenode
{
public:
char mark;
gridnode *l, *r, *u, *d;
gridnode(){
l->setleft(
r->setright(NULL);//crashes
u->setup(NULL);
d->setdown(NULL);
}
//set and get functions
protected:
};
任何帮助都倍受赞赏。
最佳答案
尝试使用gridnode
时, undefined 。例如,如果您在.h
文件中有循环引用,则可能会发生这种情况。由于您只是声明一个指针,因此可以使用前向声明:
#ifndef GRID_H
#define GRID_H
// there should be no include of grid.h here
// move the gridnode.h and basenode.h includes to grid.cpp instead
class gridnode; // forward declaration
class grid
{
public:
grid();
void print();
protected:
gridnode *head;
};
#endif // GRID_H
在
gridnode
构造函数内部,您正在调用l
,r
,u
和d
指针的方法,这些方法尚未初始化为指向任何东西。您正在通过调用 undefined 的行为来调用它们上的方法。您可能打算将指针本身设置为NULL
,例如:gridnode(){
l = NULL;
r = NULL;
u = NULL;
d = NULL;
}
要么:
gridnode() :
l(NULL),
r(NULL),
u(NULL),
d(NULL)
{
}
关于c++ - 类指针错误:没有类型,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/34191715/