当我尝试调用一个函数时,将对类型为int的变量的引用传递给一个类型为int的函数,我得到一个错误,似乎指出int是类型它被宣布的类,为什么会这样?
部首:
class MyClass {
public:
int MAJOR = 3;
int MINOR = 3;
int REV = 0;
}
代码:
glfwGetVersion(&MyClass::OPENGL_VERSION_MAJOR, &MyClass::OPENGL_VERSION_MINOR, &MyClass::OPENGL_VERSION_REV);
错误:
error: cannot convert 'int MyClass::*' to 'int*' for argument '1' to 'void glfwGetVersion(int*, int*, int*)'
答案 0 :(得分:3)
更改为:
class MyClass {
public:
static const int MAJOR = 3;
static const int MINOR = 3;
static const int REV = 0;
};
如果这些版本常量。
否则为:
class MyClass {
public:
static int MAJOR;
static int MINOR;
static int REV;
};
然后在.cpp
文件中的某个地方
int MyClass::MAJOR = 3;
int MyClass::MINOR = 3;
int MyClass::REV = 0;
答案 1 :(得分:2)
&MyClass::OPENGL_VERSION_MAJOR
是成员的指针。
您可以使用
MyClass instance;
glfwGetVersion(&instance.OPENGL_VERSION_MAJOR,
&instance.OPENGL_VERSION_MINOR,
&instance.OPENGL_VERSION_REV);