Какой из следующих подходов лучше всего определить глобальную переменную:
- публичные статические переменные класса
- использовать один объект класса со всеми закрытыми переменными: (singleton class)
- пространства имен - я должен просто использовать пространство имен.
Я не уверен, имеет ли этот вопрос смысл. Просто пытаюсь найти лучшую практику.
Код ниже не является синтаксически правильным, но я думаю, что он должен передать идею:
----------------------------------------------------------------
class Reader {
Reader();
Library* lib;
static Reader* reader;
public:
Reader* Instance () {
if (!reader) { reader = new Reader() }
return reader;
}
void setLibrary ( Library* ptr ) { lib = ptr }
Library* getLibrary { return lib }
}
Reader* Reader::reader = NULL;
int main( ) {
...
Library* lib = new Library("test");
Reader::Instance()->setLibrary(lib);
Reader::Instance()->getLibrary()->addCell("AND2X1");
}
-------------- OR -------------
class Reader {
Reader();
public:
static Library* lib;
}
Library* Reader::lib = NULL;
int main( ) {
...
Reader::lib = new Library("test");
Reader::lib->addCell("AND2X1");
}
---------------- OR -----------------
namespace Reader {
Library* lib = NULL;
}
int main( ) {
...
Reader::lib = new Library("test");
Reader::lib->addCell("AND2X1");
}
---------------------------------------------------------------
Я пытаюсь создать новые команды в моей программе на C ++ с помощью интерфейса TCL, используя Tcl_createCommand. Я не могу передать новые аргументы в реализацию функции
В результате мне нужны глобальные переменные для доступа к некоторым моим данным внутри функции.
Все решения, которые я нашел для этого, похоже, используют глобальные переменные.
Другой случай, когда мне нужно выше, - использование bison для генерации парсера.
Мне нужно определить глобальные переменные для выполнения действий при использовании грамматики зубров.