C++ ::与所有其他类共享类

cpp*_*oob 0 c++ oop share class

我是OOP和C++的新手.

我有一个名为Database的类.此类的构造函数将建立与数据库的连接.然后,我有其他类,如用户,分数等.我希望所有这些类共享来自Database类的连接.我怎么做?

程序流程示例:

  • 主要功能称为数据库类,它建立与数据库的连接.

  • 我想验证用户,如下所示:

    用户a("user1","password1"); a.authenticate("user1","password1");

但在我的Users :: authenticate函数中,如何利用已经建立的连接?

编辑:

我在c ++中使用mysql ++

在阅读答案后,我将使用"传递作为参考"方法.但我遇到了几个错误:

main.cpp

mysqlpp::Connection conn(false);    

int main() {
if (conn.connect(DATANAME, HOST, DBUSER, DBPASS)) {
    Users a(conn, "test","pass");
    a.authenticate();
Run Code Online (Sandbox Code Playgroud)

这是我的用户构造函数和身份验证功能:

Users.cpp

Users::Users(mysqlpp::Connection conn, string username, string password) {
    this->conn = conn;
    this->username = username;
    this->password = password;
}

void Users::authenticate() {
    if(this->conn != NULL){
        cout << "Have connection" << endl;
    } else {
        cout << "No connection" << endl;
    }
}
Run Code Online (Sandbox Code Playgroud)

它可以编译和运行.但它命令行,它显示:

Segmentation fault.
Run Code Online (Sandbox Code Playgroud)

有什么想法吗?我猜我的代码错了

ten*_*our 5

我建议传递与其他类的构造函数的连接.例如:

Connection conn("servername");
User u(conn, "user", "pass");
Run Code Online (Sandbox Code Playgroud)

这是其他人建议的静态连接的替代方案.两者都工作正常,但这种模式并不假设您正在运行的应用程序中只有一个数据库连接.