Как сохранить значение статической переменной внутри одного класса, который имеет 2 реализации

0

Мне нужно вызвать статические функции внутри класса (например, UserApp), который возвращает статическое значение. Определение класса и объявление в 2 файлах.

File1.h:

userApp(){

    static int* foo;
}

file1.cpp:

{
    int* userApp::foo = 0;
    ...
    .
    .

    foo = somevar;

}

Тот же класс (userApp) реализован в файле2 и во избежание ошибки связывания я вынужден объявить и определить статическую переменную в файле2.

В файле 2.cpp, когда userApp :: foo инициализируется 0, возвращаемое значение функции getFoo всегда равно нулю.

Мне нужно значение, связанное с foo в файле1. Есть ли способ избежать определения статической переменной в файле2? Заранее спасибо.

Теги:
static

2 ответа

0

Какой беспорядок: D

Если бы я понял вас правильно, я считаю, что вы должны объявить статический член как extern в одном из файлов, чтобы указать на него, фактически ссылаясь на переменную, объявленную в другом месте.

  • 0
    Два файла имеют декларацию и реализацию одного и того же класса [с некоторыми изменениями в функциональных возможностях]. То есть статические переменные-члены и функции должны быть определены в обоих r8?
  • 0
    Ой, теперь подождите ... Вы определяете один и тот же класс по-разному в каждом файле, включая оба файла?
Показать ещё 3 комментария
0

В UserApp.h:

class UserApp {
private:
    static int* foo_;
public:
    static int* getFoo() { return foo_; }
};

В UserApp.cpp:

#include "UserApp.h"

int* UserApp::foo_ = NULL;

В любом другом месте, где вам нужно его использовать:

#include "UserApp.h"
...
int* foo = UserApp::getFoo();

Вы не указали какие-либо сведения о вашем namespace/class заполненном static вещами, но подумайте над тем, чтобы сделать больше дизайна OO или, если вам кажется разумным сохранить его в одном классе, подумайте о внедрении синглтона, который также позволит вам хранить информацию о его состояние более разумным образом. (у вас может получиться что-то вроде этого)

Ещё вопросы

Сообщество Overcoder
Наверх
Меню