C ++ и MySql ++ :: Ошибка сегментации? - PullRequest
0 голосов
/ 13 февраля 2011

Хорошо, я просто поместил свой код здесь:

main.cpp

mysqlpp::Connection conn(false);

int main() {
if (conn.connect(DATABASE, 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;
}

Я могу скомпилироватьПрограмма без ошибок, но в командной строке написано «Ошибка сегментации».Что это за ошибка?и как это решить?

1 Ответ

2 голосов
/ 13 февраля 2011

Вы должны сохранить указатель на mysqlpp::Connection в вашем классе Users, а затем принять указатель вместо целого объекта соединения в вашем конструкторе.Не забудьте обновить и другие ссылки в вашей реализации класса.

main.cpp:

замените

mysqlpp::Connection conn(false);

на

mysqlpp::Connection *conn = new mysqlpp::Connection(false);

Users.cpp

замените

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

на

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

, пока в вашем Users.h написано что-то вроде этого

class Users
{
    private:
        mysqlpp::Connection *conn; // <-- the star is important!
    // rest of class definition goes here
};

тогда вы получаете доступ к методам conn, таким как conn->method()

...