c++ - 从不同的 C++ 类访问 Mysql * 连接变量

标签 c++ mysql class connection friend-class

我编写了 C++ 类来连接 mysql 数据库:

hpp 文件

#include <vector>
#include <string>

#include "mysql/mysql.h"

#ifndef _DATA
#define _DATA

class Database {

public:
    string host; 
    string user; 
    string pwd; 
    string db; 
    MYSQL * connection;
    MYSQL_RES *result;
    MYSQL_ROW row;

Database(const string & host,
         const string & user,
     const string & pwd,
     const string & db);

    int createMysqlConnection();
};
#endif

cpp文件

#include "Database.hpp"

Database::Database(const string & host,
           const string & user,
           const string & pwd,
           const string & db) :
    mysqlHost(host),
    mysqlUser(user),
    mysqlPassword(pwd),
    mysqlDBName(db)
{}
int Database::createMysqlConnection(){
    MYSQL * connection;
    connection = mysql_init(NULL);
               if(!mysql_real_connect(connection, mysqlHost.c_str(), mysqlUser.c_str(),
               mysqlPassword.c_str(), mysqlDBName.c_str(),
               0, NULL, 0)){
    fprintf(stderr, "Connection to database failed: %s\n",
        mysql_error(connection));
    return EXIT_FAILURE;
    }
    cout << "connected to mysql" << endl;
    };

当我尝试从主函数或其他类访问连接变量时,我总是收到类似变量“连接未在此范围内声明”的错误。我尝试使用友元类或继承来指向连接变量,但它不起作用。我认为我的语法有问题。

这是我如何尝试从不同类指向此变量的示例:

Class risk: public Database {
public:
vector<sting> parameter;
Datasabse.connection;
etc....
}

最佳答案

为了解决这个问题,我必须在类构造函数中定义 MYSQL 连接。这是一个代码示例:

class1.hpp

***headers***
class Flight { 

public:

Flight(MYSQL * connection);

MYSQL * c;

MYSQL_RES * res;

etc...

Class1.cpp

***headers***

Flight::Flight (MYSQL* connection)

{

c = connection;

};

等等...

main.cpp

***headers***

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

Database db(localhost, user, etc..);

db.createMysqlConnection;

Flight fl(db.connection);

fl.GetIDs();

etc...

关于c++ - 从不同的 C++ 类访问 Mysql * 连接变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15873895/

相关文章:

mysql - 将 mysql 查询转换为在 vb.net 中使用

java - 同一文件中的多个 JPanel 定义

c++ - 如何在从抽象基派生的类中实现相同的方法?

Python:定义具有依赖属性的类

c++ - 如何在 tbb 流程图中中止节点及其子节点的执行

c++ - 为连接点客户端提供 IDispatch 实现

Mysql 查询执行时间太长。为什么?

php - 更改选项字段时新增查询数据库

c++ - 如何使用 C++ 将特征稀疏矩阵转换为数组?

java - 一起使用java和C++的Android项目