Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C/C++: Программирование под Unix/Linux > static трабл


Автор: Kappac 2.4.2007, 16:03
Есть класс с объявленными статическими членами:
    static QSqlDatabase db;
    static QSqlQuery qr;
Этот класс используется в 2 других модулях программы. При компиляции проекта получаю:
./release\mainwind.o(.text+0x1b3a):mainwind.cpp: undefined reference to `DBAccess:smileb'
./release\mainwind.o(.text+0x204a):mainwind.cpp: undefined reference to `DBAccess:smileb'

И соответственно такая же ошибка во втором модуле.
Тыкните плиз носом что не так делаю! 

Объявление класса.
Код

class DBAccess {
public:
    DBAccess();
    ~DBAccess();
    static QSqlDatabase db;
    static QSqlQuery qr;

public:
    QSqlQuery * execScript(QString &script);
};


Использование:

Код

DBAccess myDB;

myDB.db = QSqlDatabase::addDatabase("QSQLITE");

Автор: Fazil6 2.4.2007, 16:11
статические члены класса нужно определять дополнительно и отдельно от экземпляра класса. Они у всех объектов общие.
Что-то вроде
Код

QSqlDatabase DBAccess::db = QSqlDatabase::addDatabase("QSQLITE");

Автор: Kappac 2.4.2007, 16:48
Спасибо за совет, попробую! 
Еще вопросик, как правильно реализовать приватные статические члены и доступ к ним из функций членов класса. 

P.S "С++, 3-е издание" Страуструпа затер до дыр так и не нашел вариант решения.... =(((( 

Автор: JackYF 2.4.2007, 16:55
Цитата(Kappac @  2.4.2007,  16:48 Найти цитируемый пост)
Еще вопросик, как правильно реализовать приватные статические члены и доступ к ним из функций членов класса. 


так же, как и обычные статические. И доступ к ним самый обычный, но будет этот доступ только из функций класса. Ничего особенного, пробуй.

Автор: Kappac 2.4.2007, 17:05
Разобрался! =) 

Fazil6, большое спасибо! 

Тема закрыта! 

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)