Создание классов c++ без RTL (new, malloc etc)

Тема в разделе "WASM.BEGINNERS", создана пользователем lammer_222, 11 май 2009.

  1. lammer_222

    lammer_222 New Member

    Публикаций:
    0
    Регистрация:
    11 май 2009
    Сообщения:
    15
    Здрасьте, подскажите пожалуйста ламеру, как в 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); // и так тоже
    ...
    }
     
  2. GoldFinch

    GoldFinch New Member

    Публикаций:
    0
    Регистрация:
    29 мар 2008
    Сообщения:
    1.775
    void* operator new(size_t cb) {return HeapAlloc(...);}
     
  3. lammer_222

    lammer_222 New Member

    Публикаций:
    0
    Регистрация:
    11 май 2009
    Сообщения:
    15
    ну переопределим мы оператор, а смысл от этого разве изменится? И будет ли использоваться RunTimeLib, мне нужно от него отойти, но по-прежнему использовать классы.
     
  4. TSS

    TSS New Member

    Публикаций:
    0
    Регистрация:
    13 апр 2009
    Сообщения:
    494
    Отключаешь RTL так: #pragma comment ( linker, "/ENTRY:EntryPoint" )
    Далее пишешь на классическом С, для создания классов используешь функции для работы с кучей.
     
  5. Microedition

    Microedition Active Member

    Публикаций:
    0
    Регистрация:
    5 июн 2008
    Сообщения:
    814
    lammer_222
    Изменился в лучшую для тебя сторону
     
  6. lammer_222

    lammer_222 New Member

    Публикаций:
    0
    Регистрация:
    11 май 2009
    Сообщения:
    15
    TSS
    Это оно понятно, как писал GoldFinch получилось создать конструктор (правда с пом. VirtualAlloc), теперь проблема с деструктором :)
     
  7. lammer_222

    lammer_222 New Member

    Публикаций:
    0
    Регистрация:
    11 май 2009
    Сообщения:
    15
    И вопрос в догонку по конструктору, правильно ли будет создать вышеописанный класс так:

    void* operator new(size_t cb) {return VirtualAlloc(NULL, cb, ...,...);}
    ...
    class TestClass
    {
    ...
    };

    ...

    TestClass *testclass = new(333);
     
  8. sivsoft

    sivsoft New Member

    Публикаций:
    0
    Регистрация:
    26 дек 2008
    Сообщения:
    82
    lammer_222
    почитай мою тему ниже - там все написано:
    http://wasm.ru/forum/viewtopic.php?id=32580
     
  9. lammer_222

    lammer_222 New Member

    Публикаций:
    0
    Регистрация:
    11 май 2009
    Сообщения:
    15
    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){};

    ???
     
  10. lammer_222

    lammer_222 New Member

    Публикаций:
    0
    Регистрация:
    11 май 2009
    Сообщения:
    15
    sivsoft
    Ттплю )))

    Олл
    Все работает, всем спасибо, тему можно закрыть )))))))))))))))))))))