Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 5.00/2: Рейтинг темы: голосов - 2, средняя оценка - 5.00
kravam
быдлокодер
1711 / 898 / 106
Регистрация: 04.06.2008
Сообщений: 5,588
1

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

28.03.2012, 12:11. Просмотров 454. Ответов 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
Ответы с готовыми решениями:

Есть объект. Если на него нажимаешь дается 100 очков
Есть объект. Если на него нажимаешь дается 100 очков. Если еще раз нажимаешь дается еще 100. Как...

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

вызов функции возвращающей значение без использования этого значения
Взято из работающего кода отсюда Есть функция: uint8_t wg12232_read(uint8_t chip) { ...

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

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

5
soon
2547 / 1312 / 177
Регистрация: 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
быдлокодер
1711 / 898 / 106
Регистрация: 04.06.2008
Сообщений: 5,588
28.03.2012, 12:30  [ТС] 3
Нет. Проблема в том, как мне вместо вектора подставить вызов функции, этот вектор возвращающей. Да не абы куда, а в конструктор объекта шаблонного класса; определение класса я дал.
0
soon
2547 / 1312 / 177
Регистрация: 09.05.2011
Сообщений: 3,086
Записей в блоге: 1
28.03.2012, 12:34 4
kravam, у вас функция возвращает значение, а конструктор принимает ссылку.
0
silent_1991
Эксперт С++
5016 / 3076 / 271
Регистрация: 11.11.2009
Сообщений: 7,045
Завершенные тесты: 1
28.03.2012, 12:38 5
kravam, по константной ссылке надо принимать. Функция возвращает временный объект, который по стандарту может быть принят либо по значению, либо по константной ссылке.
1
kravam
быдлокодер
1711 / 898 / 106
Регистрация: 04.06.2008
Сообщений: 5,588
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

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

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

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


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

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

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