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

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

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

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

28.03.2012, 12:11. Просмотров 402. Ответов 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>)

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

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

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

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

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

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

Почему объект типа std::vector не читается из потока? - C++
# include &lt;iostream&gt; # include &lt;vector&gt; # include &lt;fstream&gt; using namespace std; int main () {

Если функция находит в строке число, то вместо него она переписывает в выходную строку соответствующее по счету слово из входной строки - C++
Функция переписывает строку. Если она находит в строке число, то вместо него она переписывает в выходную строку соответствующее по счету...

Перегрузка функции, почему вызов неоднозначен? - C++
Добрый день, столкнулся с проблемой, объясните ее причину. Делаю перегрузку void Save_to_file (QString FileName, int FileIndex,float...

Объявление функции, принимающей объект любого типа - C++
Доброго времени суток. Мне нужна функция, которая будет принимать 3 объекта функции как критерии сортировки. Все три критерия могут быть...

Почему если в консоли ввести вместо числа любой символ, программа впадает в бесконечный цикл? - C++
Всем привет! Недавно начал изучать С++ и столкнулся с проблемой при создании калькулятора. Если в консоли ввести вместо числа любой...


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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
soon
2538 / 1303 / 81
Регистрация: 09.05.2011
Сообщений: 3,086
Записей в блоге: 1
28.03.2012, 12:19     Есть объект типа T, но если вместо него подставить вызов функции, возвращающей T, код не компилится, почему? #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());
}
kravam
быдлокодер
1691 / 878 / 44
Регистрация: 04.06.2008
Сообщений: 5,409
28.03.2012, 12:30  [ТС]     Есть объект типа T, но если вместо него подставить вызов функции, возвращающей T, код не компилится, почему? #3
Нет. Проблема в том, как мне вместо вектора подставить вызов функции, этот вектор возвращающей. Да не абы куда, а в конструктор объекта шаблонного класса; определение класса я дал.
soon
2538 / 1303 / 81
Регистрация: 09.05.2011
Сообщений: 3,086
Записей в блоге: 1
28.03.2012, 12:34     Есть объект типа T, но если вместо него подставить вызов функции, возвращающей T, код не компилится, почему? #4
kravam, у вас функция возвращает значение, а конструктор принимает ссылку.
silent_1991
Эксперт С++
4958 / 3034 / 149
Регистрация: 11.11.2009
Сообщений: 7,027
Завершенные тесты: 1
28.03.2012, 12:38     Есть объект типа T, но если вместо него подставить вызов функции, возвращающей T, код не компилится, почему? #5
kravam, по константной ссылке надо принимать. Функция возвращает временный объект, который по стандарту может быть принят либо по значению, либо по константной ссылке.
kravam
быдлокодер
1691 / 878 / 44
Регистрация: 04.06.2008
Сообщений: 5,409
28.03.2012, 12:47  [ТС]     Есть объект типа T, но если вместо него подставить вызов функции, возвращающей T, код не компилится, почему? #6
другой коленкор
Yandex
Объявления
28.03.2012, 12:47     Есть объект типа T, но если вместо него подставить вызов функции, возвращающей T, код не компилится, почему?
Ответ Создать тему
Опции темы

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