首页 > 解决方案 > 在没有类实例的情况下调用 C++ 类方法?

问题描述

长话短说,我正在尝试构建一个包装器来从 C 主函数访问 C++ 源代码(由于嵌入式系统,我必须进行转换);但是,在不创建该类的实例的情况下,我无法将类中的方法调用到外部函数。

我想*side从我的 C 代码中传递这个指针,计算它的立方,并返回立方值。我已经用简单的指针函数和变量测试了我的包装器,它工作得很好,但是我在使用类方法时遇到了问题。这是我的源代码,我在最后一行犯了错误......:

class Cube
{
public:
    static int getVolume(int *side)
    {
        return *side * *side * *side;     //returns volume of cube
    }
};

void Cube_C(int *side) 
{
    return Cube.getVolume(*side);
}

标签: c++classmethodsinstancecall

解决方案


您可以在static没有实例的情况下调用类的成员函数:只需在成员函数的名称之前添加类名,然后是范围解析运算符( )(而不是您尝试过::的类成员运算符, )。.

此外,在您的Cube_C函数中,您不应取消引用side指针,因为该getVolume函数将int *指针作为其参数。并且您需要将该函数的返回类型声明为int(not void):

int Cube_C(int *side) 
{
    return Cube::getVolume(side);
}

推荐阅读