“SceneElement”未在此范围内声明

‘SceneElement’ was not declared in this scope

本文关键字:范围内 声明 SceneElement      更新时间:2023-10-16

我想在我的3d查看器中使用选择,我尝试了这个例子,但我遇到了以下问题:

错误:"场景元素"未在此范围内声明 QList场景元素 ;

场景.h 文件:

#ifndef SCENE_H
#define SCENE_H
 #include <sceneelement.h>
#include <QGLViewer/qglviewer.h>
class Scene
{
private:
    /// The list of elements that make up the scene
 QList <SceneElement*> sceneElements ;
public:
     Scene();
    /// Creates a scene with RenderElements positionned on a regular grid.
    /// Consider increasing selectBufferSize() if you use more RenderElements.
    void draw();
    void setSelected(int i);
    void drawWithNames();
void clearSelection();
};

场景元素.h 文件:

#include <QGLViewer/qglviewer.h>
#include <viewer.h>
class SceneElement
{
    friend class Scene;
private:
    qglviewer::Frame frame;
    bool isSelected;

public:
    /// Constructor
    SceneElement(float x, float y){
        isSelected=false;
        qglviewer::Vec pos(x,y,0.0);
        frame.setPosition(pos);
    }
    /// Draws this element
    void draw() const;
};

我不知道为什么它不能使用SceneElement,尽管我包含了siteelement.h

我感谢任何帮助,谢谢。

该建议解决了我的问题看起来您有一个循环依赖关系。尝试在 scene.h 中的行类 Scene 之前添加一个前向声明类 SceneElement – Romha Korev