Предположим, у меня есть объект, который имеет переменную-член, которая имеет некоторый тип шаблона. Так, в объявлении класса, было бы что-то вроде этого:Почему инициализация типа шаблона требует повторения типа переменной?
// This is just the declaration of bar which is a member of some class.
templatizedType<Foo> bar;
Теперь, когда я хочу, чтобы инициализировать bar
почему я должен делать
// This is the initialization. Note that I am assuming that templatizedType has a
// constructor that takes an argument of type T*. Presumably, this is happening
// somewhere inside whatever class has declared bar as a member.
templatizedType<Foo> bar(new Foo());
вместо того, чтобы просто
bar(new Foo());
EDIT (пытается уточнить): По сути, мне кажется, что тип бара (включая параметризованный тип) уже указан в его объявлении как член класса и, следовательно, не требует повторения при инициализации.
Если это не имеет смысла, дайте мне знать (я обнаружил это в основном посредством проб и ошибок и некоторых полезных людей в IRC, поэтому, если мое понимание того, что происходит здесь, является неправильным, помощь в этом также будет с благодарностью.)
Is «бар» переменная член класса или в каком контексте делать вам объявлять и использовать бар? –
Это определенно неправильно - вам не нужно повторять объявление переменной. Вставьте полный образец. –
Вы хотите сказать, что 'TemplatizedType' имеет конструктор, который принимает 'T *' в качестве аргумента, и вы хотите, чтобы 'T' выводился из параметра для перехода к конструктору? –