44 / 44 / 17
Регистрация: 13.09.2012
Сообщений: 196
1

Возвращаемые значения функции шаблонного класса A и A<T>

27.09.2012, 14:09. Показов 645. Ответов 2
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
 первый листинг 
 
template <typename T>
class A
{
 
 public:
  T a;
 
  A& f()
  {
   a=3;
  }
};

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
второй листинг
template <typename T>
class A
{
 
 public:
  T a;
 
  A<T>& f()
  {
   a=3;
  }
};
В первом случае возвращается объекта класса А, а во втором случае объект параметризованного класса А. Но у меня как-то неукладывается в голове.

Если класс параметризованный, то при возвращении объекта класса А без указания параметров шаблона будет получатся так, что нет возможности понять разницу: возвращаемый объект А не показывает какой тип был применен для формирования класса А.

Например:

A <int>
A <double>

но функция f из первого листинга вернет объект класса А

Сможем ли мы их сравнивать? И какой тогда смысл возвращать объект класса без параметров в параметризованном классе.

В случае при втором листинге, все гораздо понятнее
Если объявили A<int>
то и вернется объект A <int> по завершении функции f
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
27.09.2012, 14:09
Ответы с готовыми решениями:

Как корректно передать в метод шаблонного класса объект шаблонного класса в качестве параметра?
header.h template &lt;class T&gt; class MyVector { public: void swap(MyVector&lt;T&gt;Vector); }...

Возвращаемые значения из функции
Здравствуйте! Есть вот такой код class Man: weight = 0 height = 0 color = (0, 0, 0)...

Возвращаемые значения функции
Есть функция, которая должна вернуть в программу значение, но что то не так. int StartInfo(int...

Возвращаемые значения функции
Вопрос следующего характера, если функция матлаба возвращает массив значений , то как можно...

2
В астрале
Эксперт С++
8049 / 4806 / 655
Регистрация: 24.06.2010
Сообщений: 10,562
27.09.2012, 14:24 2
В параметризованном классе, ежели мы используем непараметризованный тип данного класса - компилятор знает, что мы имеем ввиду текущий инстанс.
C++
1
2
3
4
5
6
template<typename T>
struct This
{
   // Эквивалентно This<T>& get_this() const;
   This& get_this() const;
};
1
DU
1500 / 1146 / 165
Регистрация: 05.12.2011
Сообщений: 2,279
27.09.2012, 14:33 3
ога. вот еще доказательство:
http://liveworkspace.org/code/... afef6024ae
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#include <iostream>
 
template <typename T>
class A
{
  public:
    static void Check()
    {
       const bool is = std::is_same< A, A<T> >::value;
       std::cout << is << std::endl; 
    }
};
 
 
int main()
{
  A<int>::Check();
  return 0;
}
1
27.09.2012, 14:33
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
27.09.2012, 14:33
Помогаю со студенческими работами здесь

Возможно ли создание объекта шаблонного класса в функции этого класса?
Доброго времени суток, уважаемые форумчане :) Мне по лабам задали задание - реализовать шаблон...

Функции Клиент-Сервер Возвращаемые значения
1С Предприятие 8.3 Управляемые формы. Не понял момента. &amp;НаКлиенте Процедура...

Ошибка в функции шаблонного класса
Добрый вечер. Возникла такая ошибка, никак не могу понять как исправить Есть у меня класс...

Вызов метода у шаблонного поля, шаблонного класса
Пытаюсь разобраться с шаблонами- задача создать шаблонный класс, у которого есть шаблонное поле. и...


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

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2023, CyberForum.ru