Russian Qt Forum
Май 13, 2024, 05:00 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: error LNK2005 MSVC2010  (Прочитано 5509 раз)
romank
Гость
« : Май 14, 2010, 14:39 »

Привет всем, не могу разобраться:
Создаю Singleton

SharedData.h
Код:
#ifndef SHAREDDATA_H
#define SHAREDDATA_H
#include <stdio.h>

// Pattern Singleton

class SharedData
{
public:
    static SharedData* Instance();
    void FreeInst();
private:
    static SharedData* self;
    static int refcount;
    SharedData();
    ~SharedData();
};
SharedData* SharedData::self = NULL;
int SharedData::refcount = NULL;

#endif // SHAREDDATA_H

SharedData.cpp

Код:
#include "SharedData.h"

SharedData::SharedData()
{

}

SharedData::~SharedData()
{

}

SharedData* SharedData::Instance()
{
        if (!self) self = new SharedData();
        refcount++;
        return self;
}

void SharedData::FreeInst()
{
    refcount--;
    if (!refcount)
    {
        delete this;
        self = NULL;
    }
}

Далее вызываю

Код:
#include "TempestLoader.h"
#include "..\SharedData\SharedData.h"
void TempestLoader::openFile(QString filename)
{
    SharedData* sdata = SharedData::Instance();
}

Ошибка
TempestLoader.obj : error LNK2005: "private: static class SharedData * SharedData::self" (?self@SharedData@@0PAV1@A) already defined in SharedData.obj

TempestLoader.obj : error LNK2005: "private: static int SharedData::refcount" (?refcount@SharedData@@0HA) already defined in SharedData.obj
Записан
pastor
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 2901



Просмотр профиля WWW
« Ответ #1 : Май 14, 2010, 14:54 »

Цитировать
SharedData* SharedData::self = NULL;
int SharedData::refcount = NULL;

Перенеси инициализацию в SharedData.cpp
Записан

Integrated Computer Solutions, Inc. (ICS)
http://www.ics.com/
romank
Гость
« Ответ #2 : Май 14, 2010, 14:58 »

Спасибо
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.042 секунд. Запросов: 22.