Я новичок в ООП и C ++.
У меня есть класс под названием База данных. Конструктор этого класса установит соединение с базой данных. Затем у меня есть другие классы, такие как Users, Scores и т. Д. Я хочу, чтобы все эти классы совместно использовали соединение из класса Database. Как мне это сделать?
Пример выполнения программы:
Основная функция, называемая классом базы данных, которая устанавливает соединение с базой данных.
Я хочу аутентифицировать пользователя, например:
Users a ("user1", "password1");
a.authenticate ("user1", "password1");
Но в моей функции Users :: authenticate, как использовать соединение, которое уже установлено ??
EDIT:
Я использую MySQL в C ++
После прочтения ответа я буду использовать метод «передать как ссылку». Но я столкнулся с несколькими ошибками:
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.
Есть идеи, почему? Я думаю, мой код неверен