Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.67/3: Рейтинг темы: голосов - 3, средняя оценка - 4.67
быдлокодер
1717 / 904 / 106
Регистрация: 04.06.2008
Сообщений: 5,589
1

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

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

Ну и чё всё это значит? Спасибо, кто откликнется
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
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
2551 / 1316 / 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
быдлокодер
1717 / 904 / 106
Регистрация: 04.06.2008
Сообщений: 5,589
28.03.2012, 12:30  [ТС] 3
Нет. Проблема в том, как мне вместо вектора подставить вызов функции, этот вектор возвращающей. Да не абы куда, а в конструктор объекта шаблонного класса; определение класса я дал.
0
2551 / 1316 / 177
Регистрация: 09.05.2011
Сообщений: 3,086
Записей в блоге: 1
28.03.2012, 12:34 4
kravam, у вас функция возвращает значение, а конструктор принимает ссылку.
0
Эксперт С++
5034 / 3094 / 271
Регистрация: 11.11.2009
Сообщений: 7,047
28.03.2012, 12:38 5
kravam, по константной ссылке надо принимать. Функция возвращает временный объект, который по стандарту может быть принят либо по значению, либо по константной ссылке.
1
быдлокодер
1717 / 904 / 106
Регистрация: 04.06.2008
Сообщений: 5,589
28.03.2012, 12:47  [ТС] 6
другой коленкор
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
28.03.2012, 12:47

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь.

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

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

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

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

Если в ячейке есть слово то подставить значение
Подскажите формулой ищем в ячейке В1 есть ли слово из списка от I2 до I10, если есть то ставим...

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


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

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

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