无法访问嵌套类。类的无效使用

时间:2018-11-05 17:11:26

标签: c++

尝试创建嵌套类并访问其中的函数时出现错误。我已经尝试修复了几个小时,但没有成功。

  

错误:无效使用了“类sqlInterface :: connectToSQL” fhm.connectToSQL.connect();

这是我的代码:

sqlTest.cpp:

ide:AddAPI(...)

mySQLinterface.h:

{}

mySQLinterface.cpp:

#include <stdlib.h>
#include <iostream>
#include "mySQLinterface.h"


sqlInterface fhm;

int main(int argc, char const *argv[])
{

    fhm.connectToSQL.connect();

    return 0;

}

2 个答案:

答案 0 :(得分:1)

您正在尝试访问没有实例的嵌套类的成员函数。

将一个实例添加到您的课程中,例如connectToSQL connection

class sqlInterface {

    public:
        class connectToSQL{
            public:
                void connect(void);
        };
        // Add an instance
        connectToSQL connection;
};

现在您可以像这样调用成员函数:

// fhm.connection is an object on which you can call member functions:
fhm.connection.connect();

答案 1 :(得分:1)

connectToSQL是一个类类型。它具有一个名为connect的非静态成员函数。由于它是一个非静态成员函数,因此需要一个connectToSQL实例才能调用该函数。那是

fhm.connectToSQL.connect();

需要变得像

sqlInterface::connectToSQL{}.connect();

但这不是很有帮助。您可以制作connect static,然后将其命名为

fhm.connectToSQL::connect();

但是那看起来仍然不正确。如果你想

fhm.connectToSQL.connect();

然后

connectToSQL

需要成为sqlInterface的成员变量。如果您将sqlInterface更改为

class sqlInterface {

    public:
        class connectToSQL_{
            public:
                void connect(void);
        };
        connectToSQL_ connectToSQL;
};

然后

fhm.connectToSQL.connect();

现在可以使用。