0

好吧,我直接把我的代码放在这里:

主文件

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您应该在类中存储指向 a 的指针,Users然后在构造函数中接受指针而不是整个连接对象。不要忘记更新类实现中的其他引用。

主.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类似的方法conn->method()

于 2011-02-13T13:17:35.540 回答