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

tux*_*nia 0 c++ compiler-errors initialization declaration

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

我尝试使用

Connector::conn = 0;
Run Code Online (Sandbox Code Playgroud)

在实现模块中失败,因为conn是私有的,不能从外部访问.

如果我省略initiliziation我得到一个未定义的引用错误

Connector.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 */
Run Code Online (Sandbox Code Playgroud)

Connector.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;
}
Run Code Online (Sandbox Code Playgroud)

Vla*_*cow 5

代替

Connector::conn = 0;
Run Code Online (Sandbox Code Playgroud)

sql::Connection * Connector::conn = 0;
Run Code Online (Sandbox Code Playgroud)