Мне нужно вызвать статические функции внутри класса (например, 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? Заранее спасибо.
Какой беспорядок: D
Если бы я понял вас правильно, я считаю, что вы должны объявить статический член как extern в одном из файлов, чтобы указать на него, фактически ссылаясь на переменную, объявленную в другом месте.
В 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 или, если вам кажется разумным сохранить его в одном классе, подумайте о внедрении синглтона, который также позволит вам хранить информацию о его состояние более разумным образом. (у вас может получиться что-то вроде этого)