Инициализация шаблона массива - PullRequest
2 голосов
/ 11 октября 2011

Я пытаюсь имитировать векторный класс STL.Мой конструктор вызывает следующую функцию, которая выделит для него некоторую память в куче.Я хочу инициализировать каждый из объектов, будь то примитивы или объекты.Я не уверен в синтаксисе для достижения этой цели.Я просто хочу, чтобы конструктор по умолчанию был вызван.Линия с T(storage[i]); показывает пятно.

        void init_vector(uint reserve)
        {
            if (reserve == 0) reserve=1;
            _size = 0;

            storage = (T*)malloc(sizeof(T)*reserve);
            if (storage == NULL)
            {
                assert(false);
            }

            for (uint i=0; i<reserve; i++)
            {
                T(storage[i]); ???
            }
            _reserved = reserve;
        }

1 Ответ

1 голос
/ 11 октября 2011

Вы можете использовать размещение новых .

new (&storage[i]) T;
...