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)
有什么想法吗?我猜我的代码错了
我建议传递与其他类的构造函数的连接.例如:
Connection conn("servername");
User u(conn, "user", "pass");
Run Code Online (Sandbox Code Playgroud)
这是其他人建议的静态连接的替代方案.两者都工作正常,但这种模式并不假设您正在运行的应用程序中只有一个数据库连接.