0

さて、ここにコードを直接入れます:

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

エラーなしでプログラムをコンパイルできますが、コマンド ラインで「セグメンテーション違反」と表示されます。このエラーは何ですか?そしてそれを解決する方法は?

4

1 に答える 1

2

mysqlpp::Connectionへのポインターをクラスに格納してから、Usersコンストラクターで接続オブジェクト全体ではなくポインターを受け入れる必要があります。クラス実装の他の参照も更新することを忘れないでください。

main.cpp:

交換

mysqlpp::Connection conn(false);

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

ユーザー.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次に、 likeのメソッドにアクセスしますconn->method()

于 2011-02-13T13:17:35.540 に答える