Форум С++

 

Ответить на сообщение

Вернуться к теме

Вы отвечаете на сообщение:

Автор: Drive.it   (19.04.2012 в 21:20)
код:

#include <iostream>

template <class type>
void func(type var)
{
//var*=var;

std::cout << std::endl << var;
}
int main()
{

int x = 1;
//int* x;

func(x);
return 0;
}



Функция func принимает переменную типа type (template) и выводит на экран ее содержимое.
В аргументе функции ничего не сказано об указателях(type var). Если раскомментировать int* x; и x*=x; и закомментировать int x = 1; то компилятор ругается матом, это очевидно, потому что указатель умножается на указатель. Вопрос вот в чем, почему шаблонная функция имеет право принимать адрес? Как защитить функцию от указателей, если для функции требуются только типы данных для арифметических вычислений.
PS рассматривал вариант разыменования указателя, но как определить что это указатель или переменная =)


Ваше имя:

Пароль:

Цитировать

Используйте тэги для выделения текста:
Код: [code][/code]
Жирный: [b][/b]
Наклонный: [i][/i]
URL: [url][/url]

Сообщение:

Прикрепить: