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

Как переопределить конструктор класса - C++

Восстановить пароль Регистрация
 
castaway
Эксперт С++
4867 / 3006 / 370
Регистрация: 10.11.2010
Сообщений: 11,055
Записей в блоге: 10
Завершенные тесты: 1
11.11.2012, 00:59     Как переопределить конструктор класса #1
Здравствуйте. У меня есть пример такого кода:
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
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
#include <cstdio>
 
template <int n> class B {
public:
    int size;
    int a[n];
 
    B() : size(n) {
        printf( "B::B()\n" );
        for ( int i = 0; i < size; i++ ) {
            a[i] = i;
        }
    }
 
    void test() {
        printf( "B::test()\n" );
    }
};
 
template <class T = B<5> > class A {
public:
    T   t;
 
    A() {
        printf( "A::A()\n" );
    }
 
    void test() {
        printf( "A::test()\n" );
        for ( int i = 0; i < t.size; i++ ) {
            printf( "%d\n", t.a[i] );
        }
    }
};
 
int main()
{
    A < B<10> > a;
    A <>        a2;
    a.test();
    a2.test();
    return 0;
}
Никак не соображу, можно ли как-то переопределить конструктор класса B, к примеру, в такой вид: B( int x, int y ) и как-то передать в него параметры в том виде как он описан в коде ?

Не по теме:

Куда делся CUT ?

Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
11.11.2012, 00:59     Как переопределить конструктор класса
Посмотрите здесь:

Как правильно вызывать конструктор шаблонного класса? C++
C++ Создать конструктор копий и оператор присваивания для класса компьютер и члена класса марка
C++ Конструктор производного класса требует конструктор предка
Конструктор класса не видит конструктор по умолчанию другого класса C++
C++ Как написать конструктор для класса, в котором содержится структура?
Как переопределить дружественную функцию ввода для класса наследника C++
C++ Пример класса с конструктором и деструктором, создание экземпляра класса через конструктор с параметрами
Унаследоваться от базового класса и переопределить часть его данных C++
Как создать конструктор класса? C++
Как реализовать конструктор с параметрами для инициализации полей класса? C++
Создать конструктор для массива, как члена класса C++
C++ Как реализовать обнуляющий конструктор в модуле класса?

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
OhMyGodSoLong
~ Эврика! ~
 Аватар для OhMyGodSoLong
1237 / 986 / 42
Регистрация: 24.07.2012
Сообщений: 2,002
11.11.2012, 01:34     Как переопределить конструктор класса #2
Эээ, что-то я вас не понял. Где именно переопределить? Внутри конструктора A что ли?

Не по теме:

Они убили CUT. Теперь придётся выкладывать простынки кода полностью.

castaway
Эксперт С++
4867 / 3006 / 370
Регистрация: 10.11.2010
Сообщений: 11,055
Записей в блоге: 10
Завершенные тесты: 1
11.11.2012, 01:48  [ТС]     Как переопределить конструктор класса #3
Мм.. не знаю как лучше объяснить...
Допустим, если написать: A < B<10> > a;, тогда вызовется конструктор B() { ... }.
Если я опишу конструктор B как B( int a ) { ... }, то как я смогу передать в него этот параметр а данной ситуации?
OhMyGodSoLong
~ Эврика! ~
 Аватар для OhMyGodSoLong
1237 / 986 / 42
Регистрация: 24.07.2012
Сообщений: 2,002
11.11.2012, 01:52     Как переопределить конструктор класса #4
В списке инициализации же:
C++
1
2
3
4
5
6
7
8
9
template <class T = B<5> > class A {
public:
    T   t;
 
    A() : t(параметры) {
        printf( "A::A()\n" );
    }
 
    /* ... */
castaway
Эксперт С++
4867 / 3006 / 370
Регистрация: 10.11.2010
Сообщений: 11,055
Записей в блоге: 10
Завершенные тесты: 1
11.11.2012, 01:58  [ТС]     Как переопределить конструктор класса #5
Премного благодарен.
Yandex
Объявления
11.11.2012, 01:58     Как переопределить конструктор класса
Ответ Создать тему
Опции темы

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