小编Mat*_*att的帖子

Opengl - GLfloat无法识别

我对这个类声明有些麻烦,我试图为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 ++来说有点新,所以任何建议都很好,但我真正想知道的是为什么我会得到错误.

c++ opengl glut

3
推荐指数
1
解决办法
5072
查看次数

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)

c++ pointers class segmentation-fault

2
推荐指数
1
解决办法
1388
查看次数

标签 统计

c++ ×2

class ×1

glut ×1

opengl ×1

pointers ×1

segmentation-fault ×1