Легенда:
новое сообщение
закрытая нитка
новое сообщение
в закрытой нитке
старое сообщение
|
- Напоминаю, что масса вопросов по функционированию форума снимается после прочтения его описания.
- Новичкам также крайне полезно ознакомиться с данным документом.
| | | |
так тип возвращаемого значения должен до привязки к классу стоять 10.02.19 15:44 Число просмотров: 3927
Автор: dl <Dmitry Leonov>
|
не
template <class T> SparseArray< T >::int IkPukChaChaCha(){}
а
template <class T> int SparseArray< T >::IkPukChaChaCha(){}
|
<programming>
|
C++ Не могу в template class добавить метод типа void 07.02.19 04:56
Автор: Zef <Alloo Zef> Статус: Elderman
|
Возвращающий значение - пожалуйста, а void выдает ошибку unable to resolve function overload. Дичь какая-то, причем здесь overload? Я ничего не перегружаю. Переименование ф-ции ничего не меняет.
|
|
без примера кода не угадать 07.02.19 13:30
Автор: dl <Dmitry Leonov>
|
> Возвращающий значение - пожалуйста, а void выдает ошибку > unable to resolve function overload. Дичь какая-то, причем > здесь overload? Я ничего не перегружаю. Переименование > ф-ции ничего не меняет.
Возвращаемое значение вообще на перегрузку не должно влиять, но может быть что-то вылезло при использовании шаблона.
|
| |
Нет там никакой перегрузки. 09.02.19 04:25
Автор: Zef <Alloo Zef> Статус: Elderman
|
В том все и дело.
Если я пишу:
int IkPukChaChaCha() В объявлении класа
template <class T> SparseArray< T >::int IkPukChaChaCha(){
return 0;} в CPP
Все компилится. Если:
void IkPukChaChaCha()
template <class T> SparseArray< T >::int IkPukChaChaCha(){}
Ругается.
|
| | |
Похоже, понял, но... не понял 09.02.19 15:13
Автор: Zef <Alloo Zef> Статус: Elderman
|
Вроде, надо было void воткнуть в реализации метода:
> > void IkPukChaChaCha() > > > template <class T> void SparseArray< T >::IkPukChaChaCha(){}
Но почему тогда, если int, то тогда все компилится без этого intа?
|
| | | |
так тип возвращаемого значения должен до привязки к классу стоять 10.02.19 15:44
Автор: dl <Dmitry Leonov>
|
не
template <class T> SparseArray< T >::int IkPukChaChaCha(){}
а
template <class T> int SparseArray< T >::IkPukChaChaCha(){}
|
| | | | |
Так я и запутался, куда в этой дурной строке void пихать 13.02.19 04:13
Автор: Zef <Alloo Zef> Статус: Elderman
|
Тем паче, что почему-то вообще без int, оно компилировалось. Особенно, учитывая, что все примеры показывают, как объявить класс в программе, а не в хедере. Не понятно, нахрена всю строку из заголовка в программе повторять. Разобрался.
|
| | | | | |
при отсутствии int он подразумевается 13.02.19 22:37
Автор: dl <Dmitry Leonov> Отредактировано 13.02.19 22:37 Количество правок: 1
|
> Тем паче, что почему-то вообще без int, оно > компилировалось. Особенно, учитывая, что все примеры > показывают, как объявить класс в программе, а не в хедере. > Не понятно, нахрена всю строку из заголовка в программе > повторять. Разобрался.
если с void, то так:
template <class T> void SparseArray< T >::IkPukChaChaCha(){}
Но проще не париться и целиком функцию в классе описать, все равно шаблонный код должен лежать в хедерах, так что в вынесении из класса особого смысла нет.
|
| | | | | | |
Не совсем понял 16.02.19 17:09
Автор: Zef <Alloo Zef> Статус: Elderman
|
> Но проще не париться и целиком функцию в классе описать, > все равно шаблонный код должен лежать в хедерах, так что в > вынесении из класса особого смысла нет.
В хедере? Там же много-чего нельзя. В частности - переменные инициализировать.
|
| | | | | | | |
А при чем тут переменные и функции? 20.02.19 18:37
Автор: dl <Dmitry Leonov>
|
> В хедере? Там же много-чего нельзя. В частности - > переменные инициализировать.
Ну и речь не о хедере (шаблоны все равно целиком в хедерах описываются), а о теле класса или внешнем описании, которое мало что дает для небольших классов.
|
|
|