ошибки компилятора — инициализировать приватную статическую переменную Stack Overflow

Я хочу создать класс Connector, который содержит ровно один sql :: Connection Pointer.
Моя попытка состояла в том, чтобы создать одноэлементный класс и сделать указатель и сам конструктор приватными. общедоступна только статическая функция, которой разрешено создавать соединение.

Моя попытка использовать

Connector::conn = 0;

в модуле реализации произошел сбой, поскольку conn является закрытым и недоступным извне.

Если я пропускаю инициализацию, я получаю неопределенную ошибку ссылки

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 */

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

0

Решение

Вместо

Connector::conn = 0;

записывать

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

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector