无法访问嵌套类.类的使用无效
Unable to access nested class. Invalid use of class
当我试图创建一个嵌套类并访问其中的一个函数时,我遇到了错误。我已经尝试修复它好几个小时了,但没有成功。
错误:"class sqlInterface::connectToSQL"fhm.connectToSQL.connect((的使用无效;
这是我的代码:
sqlTest.cpp:
#include <stdlib.h>
#include <iostream>
#include "mySQLinterface.h"
sqlInterface fhm;
int main(int argc, char const *argv[])
{
fhm.connectToSQL.connect();
return 0;
}
mySQLinterface.h:
#ifndef MYSQLINTERFACE_H
#define MYSQLINTERFACE_H
#include <mysql_connection.h>
class sqlInterface {
public:
class connectToSQL{
public:
void connect(void);
};
};
#endif
mySQLinterface.cpp:
#include "mySQLinterface.h"
#include <mysql_connection.h>
#include <mysql_driver.h>
#include <exception.h>
#include <resultset.h>
#include <statement.h>
#include <iostream>
void sqlInterface::connectToSQL::connect(void){
sql::mysql::MySQL_Driver *driver;
sql::Connection *con;
try{
driver = sql::mysql::get_mysql_driver_instance();
con = driver->connect("tcp://172.17.0.2:3306", "USERNAME", "PASSWORD");
}
catch(std::exception &e){
cout << "CONNECTION ERROR: " << e.what() << endl;
}
bool alive = con->isValid();
std::cout << "Valid connection: " << alive << std::endl;
delete con;
}
connectToSQL
是一个类类型。它有一个名为connect
的非静态成员函数。因为它是一个非静态成员函数,所以需要connectToSQL
的实例才能调用该函数。这意味着
fhm.connectToSQL.connect();
需要成为类似的东西
sqlInterface::connectToSQL{}.connect();
但这并没有多大帮助。你可以制作connect
static
,然后你可以把它称为
fhm.connectToSQL::connect();
但这看起来还是不对。如果你想要
fhm.connectToSQL.connect();
然后
connectToSQL
需要成为CCD_ 6的成员变量。如果将sqlInterface
更改为
class sqlInterface {
public:
class connectToSQL_{
public:
void connect(void);
};
connectToSQL_ connectToSQL;
};
然后
fhm.connectToSQL.connect();
现在可以工作了。
您正试图访问一个嵌套类的成员函数,而您没有实例。
向类中添加一个实例,例如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();
相关文章:
- 无法访问嵌套类.类的使用无效
- (C++) 从另一个类访问变量时值无效
- 访问冲突投射到无效*并返回
- 调用 GetPointerFrameTouchInfo时出现错误 998(对内存位置的无效访问)
- (SDL 渲染问题)C++ 引发异常:读取访问冲突.这是无效的
- 在结构中访问数组时无效使用非静态数据成员
- 如果迭代器的迭代器永远不会无效,则是STD :: MAP访问线程安全
- JNA 参数问题:内存访问无效
- Valgrind 未显示使用不正确的 c_str() 的无效内存访问
- JNA无效的内存访问
- 访问无效的指针并进行地址
- 发生 JNI 调用 c++ dll "不满意链接错误: 对内存位置的无效访问"
- 我的代码中真的有无效的内存访问吗
- Valgrind 抱怨通过指向结构的指针访问结构成员时读取无效
- 具有deque的随机访问迭代器的迭代器无效
- 无效对象访问C
- 获取错误代码 998 尝试从命名管道读取时对内存位置的访问无效
- VirtualProtect和kernel32.dll-试图访问无效地址
- C++ 引发异常:读取访问冲突.这是无效的
- 尝试访问指向向量中对象的指针时出现无效访问错误