Нет, это полная чушь.
Прежде всего этот код даже не использует стек (если мы говорим о стеке выполнения), и вы явно неправильно поняли шаблон проектирования Singleton.
Вы используете Singleton, когда вам нужен только один экземпляр в вашей программе, но вы хотите предоставить доступ ко всем функциям этому одному экземпляру. Это как глобальная переменная, но вы можете ограничить доступ.
Во-вторых, если вам нужно использовать приведение в C ++, например:
tmp = (double*)CStack::Instance() -> getAlloc(4*sizeof(double));
Вы явно ошиблись. Не используйте void*
в C ++ сейчас. Вы можете использовать его позже, когда вам станет лучше, а не сейчас.
Основной вопрос ПОЧЕМУ вы не хотите перемещать переменные в стек? если вы просто хотите выделить динамически, зачем все же ограничивать его областью действия, используйте умные указатели, такие как std :: auto_ptr.
если вы хотите создать стек и использовать его для хранения ваших двойников, вы можете написать:
#include <vector>
int foo()
{
std::vector<double> stack;
// push values on the stack
stack.push_back(1.1);
stack.push_back(1.2);
stack.push_back(1.3);
// remove values from the stack
stack.pop_back();
stack.pop_back();
stack.pop_back();
}