Здрасьте, подскажите пожалуйста ламеру, как в VS2005 создавать классы без использования new и malloc, короче без функций RTL? делаю примерно так: class TestClass { int a; public: int getA() (return a); private: TestClass(int _a) (a = _a) ; }; ... { ... TestClass *testclass = (TestClass*)VirtualAlloc(NULL, sizeof(TestClass), ..., ...); testclass->TestClass(333); // Вот так не получается вызвать конструктор testclass::TestClass(333); // и так тоже ... }
ну переопределим мы оператор, а смысл от этого разве изменится? И будет ли использоваться RunTimeLib, мне нужно от него отойти, но по-прежнему использовать классы.
Отключаешь RTL так: #pragma comment ( linker, "/ENTRY:EntryPoint" ) Далее пишешь на классическом С, для создания классов используешь функции для работы с кучей.
TSS Это оно понятно, как писал GoldFinch получилось создать конструктор (правда с пом. VirtualAlloc), теперь проблема с деструктором
И вопрос в догонку по конструктору, правильно ли будет создать вышеописанный класс так: void* operator new(size_t cb) {return VirtualAlloc(NULL, cb, ...,...);} ... class TestClass { ... }; ... TestClass *testclass = new(333);
sivsoft А к чему там "заглушка" // Класс-заглушка RTTI сильно урезан: class type_info { public: virtual __thiscall ~type_info() {} private: __thiscall type_info(_In_ const type_info& _Rhs); }; type_info::type_info(const type_info& rhs){}; ???