Форум программистов, компьютерный форум CyberForum.ru

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
BigLow
55 / 55 / 2
Регистрация: 07.07.2013
Сообщений: 345
#1

Как вызвать конструктор для неизвестного объекта? - C++

07.07.2013, 21:38. Просмотров 505. Ответов 4
Метки нет (Все метки)

Добрый вечер. Помогите мне с задачей.
Хочу написать шаблонный класс вектор.
И в конструкторе по умолчанию нужно прописать конструкцию вызова того конструктора, объекты которого будет хранить это вектор.
Как вызвать конструктор для неизвестного объекта?

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
template<typename T>
class TCVector
{
public:
    TCVector(unsigned int size=0);
 
private:
    T *mPtr;                // указатель на вектор
    unsigned int mSize;     // размер вектора
};
 
 
template<typename T>
TCVector<T>::TCVector(unsigned int size)
{
    mSize=size;
    mPtr = new T[mSize];
    for (int i=0; i!=mSize; ++i)
        mPtr[i]= --что здесь нужно прописать?--
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
07.07.2013, 21:38     Как вызвать конструктор для неизвестного объекта?
Посмотрите здесь:

Как вызвать другой конструктор для уже созданного объекта конструктором по умолчанию? - C++
Есть класс в котором несколько конструкторов, Мне в некоторых местах нужно создавать объекты класса с конструктором по умолчанию для...

как привильно создать и вызвать конструктор для массив обьектов - C++
Сам класс class Planet{ public: string name; protected: double diameter; private: int sputniks, number, distance; public: ...

Как вызвать прегруженный const метод для статического объекта - C++
class A { public: A() { cout &lt;&lt; &quot;A()&quot; &lt;&lt; endl; } ~A() { cout &lt;&lt; &quot;~A()&quot; &lt;&lt; endl; } void foo() { cout &lt;&lt; &quot;foo 1_1&quot;; } ...

как вызвать конструктор? - C++
class t_figure { protected: int m_hor; // цифра по горизонтали char m_vert; // буква по вертикали int m_color; // цвет... ...

Как вызвать конструктор по указателю? - C++
TBase *Buffer; TBase *p; TBase *End; size_t NewSize; NewSize=Count*sizeof(TBase); if ((NewSize/sizeof(TBase))==Count) ...

Выделить память под несколько элементов + вызвать конструктор для каждого - C++
Всем привет! Есть некий класс MyClass...., у него есть конструктор MyClass::MyClass (float); Я объявляю указатель: MyClass...

Конструктор копирования для динамического объекта класса приемника - C++
class first_class { public: first_class(int q) { m_q=q; cout&lt;&lt;&quot;First class say HI&quot;&lt;&lt;endl; } ...

Зачем в программе 2 раза вызывать конструктор для одного объекта - C++
Здравствуйте, специалисты! Попалась в руки программа, похожая на то что мне надо сделать, начал разбираться и недоумеваю - зачем два раза...

Как вызвать метод объекта из контейнера? - C++
Есть абстрактный класс E, производный от CObject, в нем чистая виртуальная войдовская функция. Создал динамические объекты классов, которые...

Как по требованию вызвать дескриптора объекта? - C++
Здрасти! Подскажите пожалуйста, как вызвать дескриптор объекта myCar до сообщения &quot;End of programm&quot;?: class Car { public: ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Gorillych
14 / 14 / 1
Регистрация: 04.07.2013
Сообщений: 76
07.07.2013, 21:50     Как вызвать конструктор для неизвестного объекта? #2
BigLow, если у объектов типа T есть конструктор по умолчанию, то они вызовутся автоматически при создании массива ровно mSize раз - для каждого объекта свой.
BigLow
55 / 55 / 2
Регистрация: 07.07.2013
Сообщений: 345
07.07.2013, 21:56  [ТС]     Как вызвать конструктор для неизвестного объекта? #3
Gorillych, Получается что 18 и 19 строчки лишние. Спасибо
Gorillych
14 / 14 / 1
Регистрация: 04.07.2013
Сообщений: 76
07.07.2013, 22:06     Как вызвать конструктор для неизвестного объекта? #4
BigLow, да, лишние. Вот пример того, что Вы хотели получить - в каждом экземпляре шаблона отрабатывает свой конструктор по умолчанию, а если их не будет, код просто не скомпилируется.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
struct A
{
    A(){std::cout<<"Instance of A class created!\n";}
};
 
struct B
{
    B(){std::cout<<"Instance of B class created!\n";}
};
 
template<class T>
struct Tmp
{
    Tmp(int NumnElems) : NumElems_(NumnElems), mas(new T[NumnElems]){}
    ~Tmp(){delete[] mas;}
    int NumElems_;
    T *mas;
};
 
int main()
{
    Tmp<A> obj1(3);
    Tmp<B> obj2(5);
    
    return 0;
}
ninja2
230 / 186 / 7
Регистрация: 26.09.2012
Сообщений: 2,018
Завершенные тесты: 1
08.07.2013, 03:41     Как вызвать конструктор для неизвестного объекта? #5
Просто можно вызвать конструктор по умолчанию, например есть какой то параметр типа T допустим
в классе какой нить конструктор принимает шаблонный тип Т неизвесно какого типа T a, то мы можем просто умолчание сделать что а=Т() , от примерно так. Так можно в каждой функции поделать умолчание.
Yandex
Объявления
08.07.2013, 03:41     Как вызвать конструктор для неизвестного объекта?
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru