错误:尽管没有包含循环,但预期在'*'标记之前的预期')'

柠檬草伯爵

我有一堂课RenderMachine,其中包括RenderObject,反之亦然。我知道有关此错误的问题很多,但是解决方案却无济于事。

他们说错误主要是因为包含循环,但我没有错误,因为在RenderObject标头中我只为指向RenderMachine的指针分配内存,反之亦然。

RenderObject.h
#pragma once
#include "RenderMachine.h"

class RenderObject
{

public:
    RenderObject(RenderMachine* rm){}

}; 
RenderMachine.h
#pragma once
#include "RenderObject.h"

class RenderMachine
{

public:
    void add(RenderObject* renderObject);

};

确切的错误是

error: expected ‘)’ before ‘*’ token
RenderObject(RenderMachine* rm)
                          ^

编辑:

#include "RenderMachine.h"
class RenderMachine;

class RenderObject : public sf::Drawable
{

private:
    int renderId;

public:
    RenderObject(RenderMachine* rm){ (*rm).add(*this); }
    int getRenderId() const { return renderId; }
#include "RenderObject.h"
class RenderMachine
{

std::vector< std::vector<sf::Drawable*> > renderVector;

public:
    void add(RenderObject* renderObject);

和RenderMachine.cpp

#include "RenderMachine.h"
void RenderMachine::add(RenderObject* renderObject)
{
    renderVector[(*renderObject).getRenderId()].push_back(renderObject);
}
泰德·林格莫

add在的构造函数中对的调用RenderObject应在RenderMachine已知情况下完成(当它是完整类型时)。这适用于所有对头文件中现在具有的其他类型的对象的调用。像这样:

// RenderObject.h
class RenderMachine;

class RenderObject {
public:
    RenderObject(RenderMachine* rm);
};
// RenderMachine.h
class RenderObject;

class RenderMachine {
public:
    void add(RenderObject* renderObject);
};
// RenderObject.cpp
RenderObject::RenderObject(RenderMachine* rm) {
    rm->add(this);
}
// RenderMachine.cpp
void RenderMachine::add(RenderObject* ro) {
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

Arduino预期在'*'标记之前为')'

GCC模板:错误:'<'标记之前的预期','或'...'

错误:预期在'='标记之前的':',',',';','}'或'__attribute__'

错误:标头中“ *”标记之前的预期“)”

错误:“{”标记之前的预期表达式

'='标记之前的预期表达式

预期在'='标记之前的主要表达式

错误:“}”标记之前的预期主表达式

错误:C ++中']'标记之前的预期主表达式

错误:')'标记之前的预期主要表达式(C)

c - 创建 makefile 会导致错误“预期的 ';'、'、' 或 ')' 在 '*' 标记之前”

C ++错误:'('标记之前的预期主表达式

' ' 标记之前的预期主表达式简单错误

无法编译:错误:'('标记之前的预期主表达式

错误:C宏中')'标记之前的预期语句

矩阵类:错误:')'标记之前的预期主表达式

错误:“)”标记之前的预期主表达式

C程序“ {'标记”之前的“预期的”)上的Makefile错误”

模板错误预期在'>'标记之前的主表达式

C - “错误:预期标识符或 '(' 在 '[' 标记之前”

C ++ 预期 { 标记之前的类名,继承错误

错误:在 struct 中的 '=' 标记之前预期为 ':'、'、'、';'、'}' 或 '__attribute__'

使用指针调用函数时,在 '&' 标记之前出现错误“预期的 ')'”

C++ 错误:“{”标记之前的预期类名

C 错误:预期的声明说明符或“*”标记之前的“...”

g ++:预期在'['标记之前的主表达式

预期的声明说明符或'*'标记之前的'...'

C ++预期在'/ ='标记之前的初始化程序

'!='标记之前的预期表达式...我错了吗?