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

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

Войти
Регистрация
Восстановить пароль
 
Romires008
Сообщений: n/a
#1

определение функции за пределами шаблона класса - C++

13.01.2013, 17:15. Просмотров 531. Ответов 3
Метки нет (Все метки)

не могу определить функцию за пределами класса, не компилится
подсобите советом

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
template< typename TData >
class Owner
{
public:
  class Holder
  {
  public:
    TData i;
  };
  Holder foo(TData x);
};
 
template<typename TData> Owner<TData>::Holder Owner<TData>::foo(TData x)
{
  Holder tmp;
  tmp.i = x*x;
  return tmp;
}
C++
1
2
3
4
5
1>d:\inteniumtest\task3\task3\task3\task3.cpp(19) : warning C4346: 'Owner<TData>::Holder' : dependent name is not a type
1>        prefix with 'typename' to indicate a type
1>d:\inteniumtest\task3\task3\task3\task3.cpp(19) : error C2143: syntax error : missing ';' before 'Owner<TData>::foo'
1>d:\inteniumtest\task3\task3\task3\task3.cpp(19) : error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
1>d:\inteniumtest\task3\task3\task3\task3.cpp(19) : fatal error C1903: unable to recover from previous error(s); stopping compilation
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
13.01.2013, 17:15     определение функции за пределами шаблона класса
Посмотрите здесь:

Открытые функции класса: ввод массива, вывод массива, определение длины вектора C++
C++ объявление и определение функции класса
C++ Какими способами можно использовать функции класса B, как параметры функции Sub класса А?
Зачем объявляют методы для класса за его пределами? C++
C++ Определение метода-шаблона за пределами шаблона класса
Создание шаблона bool-функции, принимающей в качестве параметра экземпляр класса C++
C++ Определение чистой виртуальной функции класса-шаблона
C++ Cin за пределами функции main
C++ Можно ли разбивать определение шаблона класса на несколько файлов?
Как сделать шаблон функции другом шаблона класса? C++
C++ Stack. определение шаблона функции testStack. (хочу разобраться в коде)
C++ Расширение области видимости класса, за пределами цикла

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Nixy
ComfyMobile
 Аватар для Nixy
400 / 281 / 8
Регистрация: 24.07.2012
Сообщений: 916
13.01.2013, 17:43     определение функции за пределами шаблона класса #2
у меня все работает
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
 #include <iostream>
 using namespace std;
 
    template< typename TData >
    class Owner
    {
    public:
      class Holder
      {
      public:
        TData i;
      };
      Holder foo(TData x);
    };
 
    template<typename TData> Owner<TData>::Holder Owner<TData>::foo(TData x)
    {
      Holder tmp;
      tmp.i = x*x;
      return tmp;
    }
 
 int main()
 {
  Owner<int> ow;
  cout << ow.foo(2).i<<endl;
  system("pause");
 }
Nixy
ComfyMobile
 Аватар для Nixy
400 / 281 / 8
Регистрация: 24.07.2012
Сообщений: 916
13.01.2013, 17:46     определение функции за пределами шаблона класса #3
вот результат
Миниатюры
определение функции за пределами шаблона класса  
Croessmah
Модератор
Эксперт CЭксперт С++
 Аватар для Croessmah
12534 / 7096 / 797
Регистрация: 27.09.2012
Сообщений: 17,508
Записей в блоге: 2
Завершенные тесты: 1
13.01.2013, 17:55     определение функции за пределами шаблона класса #4
Как вариант:
C++
1
2
3
4
5
6
7
    template<typename TData> 
     typename Owner<TData>::Holder Owner<TData>::foo(TData x)
    {
      Holder tmp;
      tmp.i = x*x;
      return tmp;
    }
Yandex
Объявления
13.01.2013, 17:55     определение функции за пределами шаблона класса
Ответ Создать тему
Опции темы

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