无法将int {Class} :: *转换为int *

时间:2015-06-05 09:51:04

标签: c++ casting int

当我尝试调用一个函数时,将对类型为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*)' 

2 个答案:

答案 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;

检查live example here

答案 1 :(得分:2)

&MyClass::OPENGL_VERSION_MAJOR是成员的指针。

您可以使用

MyClass instance;

glfwGetVersion(&instance.OPENGL_VERSION_MAJOR,
               &instance.OPENGL_VERSION_MINOR,
               &instance.OPENGL_VERSION_REV);