类型 'Mesh *' 的参数与类型 'Mesh *' 的参数不兼容
argument of type 'Mesh *' is incompatible with parameter of type 'Mesh *'
这个错误让我感到困惑,因为我知道我已经设法将一个对象的指针传递给另一个类的函数,但现在它只是不想工作。
//source.cpp
#include <iostream>
#include <iomanip>
#include <vector>
// OPENGL Dependencies
#include <GLglew.h>
#include <GLfreeglut.h>
#include <glmglm.hpp>
#include <glmgtcmatrix_transform.hpp>
// VBO Indexer
#include "vboindexer.hpp"
// My classes
#include "controls.h"
#include "MyMeshClass.h"
const int WIDTH = 800;
const int HEIGHT = 600;
int width = WIDTH;
int height = HEIGHT;
controls* Controls; // pointer to controls object
Mesh* MyMesh;
void Display() {
GLuint pickingProgramID, gvertexbuffer;
if (true) {
Controls->myPicking( MyMesh, pickingProgramID,
gvertexbuffer);
}
}
void InitMesh() {
//loads object
MyMesh = new Mesh();
}
void InitializeResources() {
InitMesh();
}
int main(int argc, char **argv) {
// GLUT initialization.
glutInit(&argc, argv);
glutInitDisplayMode(GLUT_DOUBLE | GLUT_RGB );
glDisable(GL_MULTISAMPLE);
glutInitWindowSize(width, height);
glutCreateWindow("Codebase 1, 3.3+ Edition");
glewInit();
Controls = new controls(height, width);
glutDisplayFunc(Display);
InitializeResources();
// Enter GLUT loop.
glutMainLoop();
return 0;
}
//controls.h
#pragma once
#ifndef CONTROLS_H
#define CONTROLS_H
#include <GLglew.h>
#include <GLfreeglut.h>
#include "MyMeshClass.h"
class controls {
private:
protected:
static controls *instance;
public:
controls();
controls( int nheight, int nwidth );
void myPicking( Mesh* MyMesh,
GLuint pickingProgramID,
GLuint gvertexbuffer );
};
#endif
//Controls.cpp
#include "controls.h"
controls *controls::instance = NULL;
controls::controls() {
}
controls::controls( int nheight, int nwidth ) {
}
void controls::myPicking( Mesh* MyMesh,
GLuint pickingProgramID,
GLuint gvertexbuffer )
{
}
// MyMeshClass.h
#pragma once
class Mesh {
private:
public:
};
正如你所看到的,我定义了我的指针,它在另一个函数中被'new'证实,该函数在它到达Display()之前执行,并且我将它作为myppickk函数的参数传递给Controls类,但我得到了上面的错误,这让我感到困惑。
编辑:好了,所以也澄清,这是一个语法/智能感知错误,它不是形式编译,但出现在编辑器在函数所有我试图传递它到myppickk(…)函数
好的,我已经找到了问题,这是一个隐形循环依赖问题,部分原因是信任智能感知错误也是编译错误。
一旦我把我的网格类在#ifndef -> #endif和编译错误消失了。
当我首先调用Controls.h时,它调用我的网格类,然后再次调用它,导致重新定义错误,但我只能在编译时看到这个。
问题似乎解决了。
相关文章:
- 如何反转整数参数包
- 使用C++库在Android项目中修改gradle中的cmake参数,用于插入指令的测试
- 如何使用默认参数等选择模板专业化
- 模板参数替换失败,并且未完成隐式转换
- 具有默认模板参数的多态类的模板推导失败
- lambda参数转换为constexpr技巧,然后获取带链接的数组
- 将数组作为参数传递给函数安全吗?作为第三方职能部门,可以探索他们想要的之外的其他元素
- 函数调用中参数的顺序重要吗
- 部分定义/别名模板模板参数
- 模板-模板参数推导:三个不同的编译器三种不同的行为
- 使用不带参数的函数访问结构元素
- 基于另一个成员参数将函数调用从类传递给它的一个成员
- 如何在OMNET++中指定与命令行参数组合的输出文件名
- 如何使用Luacneneneba API正确读取字符串和表参数
- 在派生函数中指定void*参数
- 视图中的参数推导失败:take_while
- static_assert在宏中,但也可以扩展到可以用作函数参数的东西
- 使用指向成员的指针将成员函数作为参数传递
- 没有名称的C++模板参数
- 类型 'Mesh *' 的参数与类型 'Mesh *' 的参数不兼容