我对这个类声明有些麻烦,我试图为Dijktra的最短路径算法的openGL实现创建节点.getX(),getY(),getZ()方法导致错误:
错误:ISO C++禁止声明'getX'没有类型
我在ubuntu linux上用g ++编译.命令:g ++ -lglut -lGLU -lGL projecttest.c
#include <cstdarg>
#include <cstdio>
#include <GL/glut.h>
#include <GL/glu.h>
#include <cstdlib>
#include <iostream>
#define kWindowWidth 800
#define kWindowHeight 600
#define NUM_NODES 3
using namespace std;
class Node {
private:
GLfloat x, y, z;
int numLinks;
Node *links[];
public:
Node(GLfloat x, GLfloat y, ...);
~Node();
GLfloat getX();
GLfloat getY();
GLfloat getZ() {return 0.0f;}
} Node;
Node nodes_g[NUM_NODES];
Run Code Online (Sandbox Code Playgroud)
我认为问题出在预处理器宏中.我是openGL的新手,对c ++来说有点新,所以任何建议都很好,但我真正想知道的是为什么我会得到错误.
我正在处理这段代码,我不断收到分段错误.对于我的生活,我无法弄清楚为什么,我知道一个分段错误是当你尝试遵循空指针,但问题是,在我的代码"u-> previous"isnt null,也不是"u",我检查.如果我将while循环中的条件更改为(u!= NULL),它将在出现"u-> isGreen"之前迭代两次,再一次,我检查每次迭代以查看是否为null.
int extractOptimalPath() {
Node *u = nodes[NUM_NODES - 1];
int i = 0;
while (u != NULL) {
cout << i << endl;
u->isGreen = true;
u = u->previous;
i++;
}
return 0;
}
Run Code Online (Sandbox Code Playgroud)
"nodes"是指向实际Node对象的指针数组.我确信我的节点中存在"u-> previous","isGreen"初始化为false;
继承Node类,以防你想看到:
class Node {
public:
GLfloat x, y, z;
int numLinks;
Node *link1;
Node *link2;
GLfloat distance;
Node *previous;
bool isGreen;
Node(GLfloat x, GLfloat y, Node *link1, Node *link2);
Node(GLfloat x, GLfloat y, Node *link1);
Node();
Node(GLfloat x, GLfloat …Run Code Online (Sandbox Code Playgroud)