Форум программистов, компьютерный форум, киберфорум
Наши страницы

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

Войти
Регистрация
Восстановить пароль
 
kravam
быдлокодер
1700 / 887 / 45
Регистрация: 04.06.2008
Сообщений: 5,498
#1

Есть объект типа T, но если вместо него подставить вызов функции, возвращающей T, код не компилится, почему? - C++

28.03.2012, 12:11. Просмотров 418. Ответов 5
Метки нет (Все метки)

Есть объект типа vector<int>, но если вместо него подставить вызов функции, возвращающей vector<int>, код не компилится (template мутит воду), почему?

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
29
30
31
32
33
34
#include <windows.h>
#include <stdio.h>
#include <vector>
using namespace std;
 
 
//Всё просто вот класс
template <class T, template <class, class > class t, class t_= allocator<T> >
class klass  {
 public:
  klass (t<T, t_>& prom){;};
};
 
 
Функция, возвращающая vector<int>
vector <int> f () {
 vector<int> kazhdoe_pole;
 return kazhdoe_pole ;
} 
 
 
int main () {
 
//Тут всё круто 
vector<int> p;
klass<int, vector> klass_(p);
p= f();
 
//А вот тут, если раскомменитить, не компилится! 
// klass<int, vector> klass__(f());
 
 getchar ();
 return 0;
}
Ошибки такие:
no matching function for call to 'klass<int, std::vector>::klass(std::vector<int>)

Ну и чё всё это значит? Спасибо, кто откликнется
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
28.03.2012, 12:11
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Есть объект типа T, но если вместо него подставить вызов функции, возвращающей T, код не компилится, почему? (C++):

Класс содержащий объект типа ofstream - не компилится! - C++
Здравствуйте! Помогите пожалуйста!=) есть код: #include &lt;fstream&gt; class Monstr {

Есть объект. Если на него нажимаешь дается 100 очков - C#
Есть объект. Если на него нажимаешь дается 100 очков. Если еще раз нажимаешь дается еще 100. Как это написать и чтоб очки эти суммировались?

Хорошо ли использовать унарный плюс вместо функции получения модуля? Если нет, то почему? - C++
...

Какие выражения будут истинными, если вместо переменной Х подставить значение 1 ? - Информатика
Если вместо переменной Х подставить значение Х=1, то истинными будут выражения: 1) not((x&gt;1) and (x&lt;5)) 2) (x&lt;1) or (x&gt;5) 3) not(x&gt;0)...

Почему код компилится и логика верна, а результаты арифм. операций нет? - Delphi
задача состоит в создании двух массивов склавиатуры и суммы их елементов вместе и поотдельности.Аналогично с разницей. program...

Работа со строками. Дано слово. Удалить из него букву О, если такая есть. Удалить из него последнюю букву Л, если такая есть - Turbo Pascal
Привет! Нужна помощь по задачке по паскалю. Пожалуйста помогите! Задание: Дано слово. Удалить из него букву О, если такая есть....

5
soon
2542 / 1307 / 81
Регистрация: 09.05.2011
Сообщений: 3,086
Записей в блоге: 1
28.03.2012, 12:19 #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>
#include <vector>
 
struct Foo
{
    Foo(std::vector<int>&)
    {
 
    }
};
 
std::vector<int>& func1()
{
    std::vector<int> v;
    return v;
}
 
std::vector<int> func2()
{
    std::vector<int> v;
    return v;
}
 
int main()
{
    Foo f1(func1());
    //Foo f2(func2());
}
0
kravam
быдлокодер
1700 / 887 / 45
Регистрация: 04.06.2008
Сообщений: 5,498
28.03.2012, 12:30  [ТС] #3
Нет. Проблема в том, как мне вместо вектора подставить вызов функции, этот вектор возвращающей. Да не абы куда, а в конструктор объекта шаблонного класса; определение класса я дал.
0
soon
2542 / 1307 / 81
Регистрация: 09.05.2011
Сообщений: 3,086
Записей в блоге: 1
28.03.2012, 12:34 #4
kravam, у вас функция возвращает значение, а конструктор принимает ссылку.
0
silent_1991
Эксперт С++
4986 / 3043 / 149
Регистрация: 11.11.2009
Сообщений: 7,027
Завершенные тесты: 1
28.03.2012, 12:38 #5
kravam, по константной ссылке надо принимать. Функция возвращает временный объект, который по стандарту может быть принят либо по значению, либо по константной ссылке.
1
kravam
быдлокодер
1700 / 887 / 45
Регистрация: 04.06.2008
Сообщений: 5,498
28.03.2012, 12:47  [ТС] #6
другой коленкор
0
28.03.2012, 12:47
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
28.03.2012, 12:47
Привет! Вот еще темы с ответами:

Почему нехорошо себя ведёт конструктор класса (не компилится ничё), если ему параметром ссылку на константу? - C++
То есть вообще непонятно ничё, вот, смотрите, этот пример не компилится: #include &lt;stdio.h&gt; class fee { public: //Не компилится ...

Оптимизирует ли компилятор код при использовании функции, возвращающей константу? - C++
Объясните мне компиляторы С++ оптимизируют такой код?. Да и вообще компиляторы оптимизуруют это? Я просто думал, что сохраняется адрес...

Записать программу, содержащую шаблон функции, возвращающей сумму квадрата и куба числа любого числового типа - C++
Записать программу, содержащую шаблон функции, возвращающей сумму квадрата и куба числа любого числового типа Помогите пожалуйста!!! Буду...

Какие спецификаторы нужно подставить вместо в описание функции класса Pair? - C#
5) class Pair { int first, second; public Pair() { first=0;...


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

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

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