我是OOP和C++的新手。C++ ::與所有其他類共享類
我有一個名爲數據庫的類。這個類的構造函數將建立與數據庫的連接。然後,我有其他類,如用戶,分數等我希望所有這些類共享從數據庫類的連接。我怎麼做?
程序流程的示例:
主要功能調用數據庫類,它建立與數據庫的連接。
我想驗證用戶,這樣的:
一個用戶( 「用戶1」, 「密碼1」); a.authenticate(「user1」,「password1」);
但在我的Users :: authenticate函數中,如何利用已建立的連接?
編輯:
我用mysql ++在C++中
閱讀的答案後,我會用 「傳爲基準」 的方法。但我遇到severals錯誤:
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.
任何想法爲什麼?我猜我的代碼有誤
即使單例模式將*工作*,我不明白爲什麼大家都在暗示它。本着給予一點指導的精神,除非你發現其他模式導致了單例的不同問題,否則我不會推薦單例。打開多個數據庫連接並不是一個問題(至少,爲什麼我們會假設它是?),所以單例對一個簡單的全局變量static應該沒有什麼優勢。 – tenfour 2011-02-13 12:28:34