初始化私有静态变量 C++

initialize private static variable c++

本文关键字:变量 C++ 静态 初始化      更新时间:2023-10-16

我想创建一个只包含一个 sql::Connection 指针的连接器类。我的尝试是构建一个单例类,并使指针和构造函数本身私有。只有允许创建连接的静态函数是公共的。

我尝试使用

Connector::conn = 0;

在实现模块中失败,因为 Conn 是私有的,无法从外部访问。

如果我省略初始化,我会收到一个未定义的引用错误

连接器.h

#ifndef CONNECTOR_H
#define CONNECTOR_H
#include <cppconn/driver.h>
#include <cppconn/exception.h>
class Connector {
public:
    static sql::Connection* getConnection();

protected:
    Connector();
    Connector(const Connector& other) { }
    static sql::Connection * conn;
    static sql::Driver * drive;
};
#endif  /* CONNECTOR_H */

连接器.cpp

#include "Connector.h"
Connector::Connector() {
}
sql::Connection * Connector::getConnection() {
    if(Connector::conn == 0) {
        Connector::drive = get_driver_instance();
        Connector::conn = Connector::drive->connect("tcp://any.de:3306", "any", "any");
        Connector::conn->setSchema("cryptoTool");
    }
    return Connector::conn;
}

而不是

Connector::conn = 0;

sql::Connection * Connector::conn = 0;