类指针错误:没有类型
class pointer error: does not have a type
我的一个类变量是指向另一个类的指针,它给出了一个无类型的错误。想了几天就能想出来,有人看到错误了吗?由于某种原因,线路
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
时,它还没有被定义。例如,如果你的.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
由于某种原因,线路
r->setright(NULL)
使程序崩溃
在gridnode
构造函数中,您正在调用尚未初始化为指向任何对象的l
、r
、u
和d
指针上的方法。您通过调用未定义的行为上的方法来调用它们。您可能打算将指针本身设置为NULL
,例如:
gridnode(){
l = NULL;
r = NULL;
u = NULL;
d = NULL;
}
或者:
gridnode() :
l(NULL),
r(NULL),
u(NULL),
d(NULL)
{
}
相关文章:
- 非类型指针和引用模板参数,以及在编译时如何/为什么解析它们.c++
- 如何访问在 c++ 中在类内声明的结构类型指针变量?
- (C )找到基本类型指针的儿童类型
- 表达式必须具有指向对象的指针类型(指针向量)
- 将子项复制构造到父类型指针中
- C 返回类型指针声明
- 调用虚拟函数而不通过类类型指针创建任何对象
- C++ 如何使用类类型指针制作向量
- 为什么基类型指针不能获取派生类对象的地址值?
- 如何在 C++ 中获取映射类型指针,映射
- 如何检查该类型的类型指针是正确对齐的
- 正在转换为短类型指针
- 指向任意类方法的模板非类型指针
- 如何通过强制转换类型指针将字符数组转换为uint16_t
- 指向shared_ptr的不透明类型 C 指针
- C++:从值类型指针强制转换为包含迭代器
- C/C++:访问给定类型指针的位置与访问另一类型指针的相同位置不同
- 比较类型指针
- 数据类型指针使用*(Datatype *)
- 如何打印c++中char类型指针的所有值