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

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

Восстановить пароль Регистрация
 
Romires008
Сообщений: n/a
13.01.2013, 17:15     определение функции за пределами шаблона класса #1
не могу определить функцию за пределами класса, не компилится
подсобите советом

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
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Nixy
ComfyMobile
 Аватар для Nixy
399 / 280 / 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
399 / 280 / 8
Регистрация: 24.07.2012
Сообщений: 916
13.01.2013, 17:46     определение функции за пределами шаблона класса #3
вот результат
Миниатюры
определение функции за пределами шаблона класса  
Croessmah
Модератор
Эксперт С++
 Аватар для Croessmah
11800 / 6779 / 765
Регистрация: 27.09.2012
Сообщений: 16,831
Записей в блоге: 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     определение функции за пределами шаблона класса
Ответ Создать тему
Опции темы

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