Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 02.02.2014, 05:09   #1
zla9_kolu4ka
Форумчанин
 
Регистрация: 16.09.2013
Сообщений: 149
По умолчанию шаблоны

Не пойму, почему не компилируется
Код:
#include <iostream>

template<class T> 
T max(T а, T b){
	if (a > b) return(a)
	else return(b);
}


int main(void)
{
	using std::cout;
	using std::endl;
	cout << "Максимум 100 и 200 равен " << max(100, 200) << endl;
}
zla9_kolu4ka вне форума Ответить с цитированием
Старый 02.02.2014, 05:19   #2
Streletz
Старожил
 
Регистрация: 03.01.2014
Сообщений: 2,870
По умолчанию

Потому, что, как минимум, 4 ошибки в синтаксисе и не доведена до конца реализация. Подробнее здесь: C++ для начинающих Шаблоны классов Первое знакомство.
Streletz вне форума Ответить с цитированием
Старый 02.02.2014, 05:35   #3
zla9_kolu4ka
Форумчанин
 
Регистрация: 16.09.2013
Сообщений: 149
По умолчанию

Цитата:
4 ошибки
покажи синтаксические ошибки
Цитата:
Подробнее здесь: C++ для начинающих Шаблоны классов Первое знакомство.
ваша статья тоже не компилируется

Последний раз редактировалось zla9_kolu4ka; 02.02.2014 в 05:51.
zla9_kolu4ka вне форума Ответить с цитированием
Старый 02.02.2014, 06:42   #4
Streletz
Старожил
 
Регистрация: 03.01.2014
Сообщений: 2,870
По умолчанию

Цитата:
покажи синтаксические ошибки
А, что пишет компилятор?
Лично у меня, компилятор высветил 4 ошибки в этих 3х строках:
Цитата:
Код:
T max(T а, T b){
	if (a > b) return(a)
	else return(b);
Оно и понятно, потому что если этот код не правильный, то и его использование в строке:
Цитата:
Код:
cout << "Максимум 100 и 200 равен " << max(100, 200) << endl;
также вызовет ошибку. Итого, при повторном просмотре кода, я, вместе с компилятором, нашёл уже, по сути, целых 5 ошибок.
Цитата:
ваша статья тоже не компилируется
Компилироваться может только исходный код программы, а вовсе не статья.
В статье подробно изложен принцип реализации и использования шаблонов классов. Если бы Вы внимательно её прочитали, то у Вас не возник вопрос относительно синтаксических ошибок. Кроме того, Вы бы увидели, что реализация шаблона и его применения Вами не закончена. Если Вы считаете, что той информации, которая есть в статье не достаточно, то никто не запрещает Вам самостоятельно воспользоваться книгами или гуглом. Благо наводок для поиска информации в статье более чем достаточно.
Если Вы хотите, чтобы я Вам дал целиком готовый код, который компилируется, то, простите, вынужден Вас разочаровать. Вникайте и додумывайтесь, как лучше сделать, сами. Научиться программировать,можно только программируя.
Streletz вне форума Ответить с цитированием
Старый 02.02.2014, 11:59   #5
pproger
C++ hater
СтарожилДжуниор
 
Аватар для pproger
 
Регистрация: 19.07.2009
Сообщений: 3,333
По умолчанию

2zla9_kolu4ka
Цитата:
#include <iostream>

template<class T>
T max(T а, T b){
if (a > b) return(a);
else return(b);
}


int main(void)
{
using std::cout;
using std::endl;
cout << "Максимум 100 и 200 равен " << max(100, 200) << endl;
}
у тебя символ a был в русской раскладке набран. ну и точку с запятой пропустил
I invented the term Object-Oriented, and I can tell you I did not have C++ in mind. (c)Alan Kay

My other car is cdr.

Q: Whats the object-oriented way to become wealthy?
A: Inheritance
pproger вне форума Ответить с цитированием
Старый 03.03.2014, 11:00   #6
vvmcpp
Форумчанин
 
Аватар для vvmcpp
 
Регистрация: 11.12.2010
Сообщений: 116
По умолчанию

Можно так:

Код:
#include <cstdlib>
#include <iostream>
//http://www.programmersforum.ru/showthread.php?t=254274


using namespace std;

//template max1
template <class T> 
T max1(const T t1,const T t2)
    {
        return t1>t2?t1:t2;
    };

 

 
int main(int argc, char *argv[])
{
  int k1=-9,k2=-90;

  
    cout<<"max of k1 and k2 = "<<max1(k1,k2);//<< <<endl;
    
        system("PAUSE");
        return EXIT_SUCCESS;
}
тут я назвал max1, чтобы шаблон не перегружал стандартную шаблонную функцию из <cstdlib>
vvmcpp вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Шаблоны _Freak_ Общие вопросы Delphi 9 10.01.2014 14:02
Шаблоны С++ applegrub Общие вопросы C/C++ 3 16.05.2012 01:17
Шаблоны К_С_Ю Помощь студентам 1 23.04.2012 22:05
Шаблоны Jugger Помощь студентам 1 20.12.2011 22:47