gpt4 book ai didi

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

转载 作者:太空宇宙 更新时间:2023-11-04 15:09:29 25 4
gpt4 key购买 nike

我是 OOP 和 C++ 的新手。

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

程序流程示例:

  • 主函数调用数据库类,建立与数据库的连接。

  • 我想对用户进行身份验证,如下所示:

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

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

编辑:

我在c++中使用mysql++

看完答案后,我会用“pass as reference”的方式。但是我遇到了几个错误:

main.cpp

mysqlpp::Connection conn(false);

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

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

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;
}
}

可以编译运行。但它是命令行,它显示:

Segmentation fault.

有什么想法吗?我想我的代码是错误的

最佳答案

我建议将连接传递给其他类的构造函数。例如:

Connection conn("servername");
User u(conn, "user", "pass");

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

关于C++::与所有其他类共享类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4984043/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com