[С++] вызвать "соседний" конструктор? как юзать шаблоны?

VGordeev

Народ, есть пара вопросов. Плз, помогите разобраться.
1. Есть класс, в нём 2 конструктора - один по умолчанию и другой, уоторый принимает некоторые параметры. Существует ли аналог вызова this(параметры) в С++?
2. Есть в отдельном .h'нике описание template класса. Так вот, как можно из основной программы скармливать данному классу другие классы, которые описаны тоже в отдельных .h'никах?
И не надо мне советовать править свою ДНК - не помогает, пробовал.

bobby

так и в чем, соб-сно, проблема?

evgen5555

2. .h-ники и темплейты - это очень, очень разнородные вещи.
Препроцессор на шаблоны не глядит.

mirt1971

1) Нет. Для таких целей я обычно делаю функцию init, которую и вызываю из разных конструкторов с разными параметрами. Правда можно написать: this = YourClass( blablabla ); , но это бэд.

VGordeev

По вервому пункту: хотелось бы найти средство, аналогичное следующему в с#
class A
{
private int b;
public A:this(0)
{
}
public A(int a)
{
b=a;
}
};

bobby

а, ясно
ну все сказал

VGordeev

Хех... Жаль. Это было бы, согласитесь, удобно...

VGordeev

Да ясно это. Я просто, наверное, неясно выразился. Мне нужно как-то заставить добавлять на этапе компиляции описание *.h'ников. Хотя пох#й.
Спасибо всем, тред, думаю, имеет смысл закрыть.

ray144

А я тут как раз в соседнем треде о доработке C++ до уровня C#...
Почему бы тебе не создать обычный метод и не вызывать его из конструктора?
Да, коряво. Но С++ за годы его развития уже столько корявостей накопилось, что ничё страшного.

zontik

в данном случае можно сделать


class A
{
int b;
public:
A (int a = 0)
{
b = a;
}
};

mirt1971

А почему бы тебе не прочитывать весь тред до ответа на вопрос?

VGordeev

Да, в общем, так и придётся сделать. Просто можно пойти 2-мя корявыми путями: либо дублировать код, либо создавать дополнительные функции. Согласитесь, излишнее загромождение программы.

mirt1971

Это плохо: происходит передача параметра даже если этого и не нужно. А если это критичный к скорости класс? И даже такой пустяк может сильно затормозить работу. Да и не всегда можно так сделать.

VGordeev

Хм... А вот об этом, я не подумал. СПАСИБО!
Оставить комментарий
Имя или ник:
Комментарий: