темплейт функции с параметром - значением
От: Micker  
Дата: 21.11.01 18:22
Оценка:
Добрый день, Уважаемые Господа!

Вопрос может глупый, но всё же!
Создавать темплейт класса, который может брать как параметр темплейта не класс, а какое -либо значение — не сложно и можно. А вот при создании функции я столкнулся с проблемой, подскажите, в чём же я не прав:


template<int BACK> int A( int p)
{
    int bw = BACK;
    ::printf(" backgownd = %d", bw);
    ::printf(" parameter = %d\n", p);
    return 4;
}


#include <stdio.h>

void main(void)
{    
    int k = 0;
    k = A<5>(1);
    k = A<6>(2);
    k = A<7>(3);
    k = A<8>(4);
}



такая программа собранная на MSVC++ 6.0

выдала следующий результат:

backgownd = 8 parameter = 1
backgownd = 8 parameter = 2
backgownd = 8 parameter = 3
backgownd = 8 parameter = 4

какова может быть причина?
Жизнь, как игра —
идея паршивая,
графика обалденная...
Re: темплейт функции с параметром - значением
От: Андрей Тарасевич Беларусь  
Дата: 21.11.01 18:37
Оценка: 18 (6)
Здравствуйте Micker, Вы писали:

M>Вопрос может глупый, но всё же!

M>Создавать темплейт класса, который может брать как параметр темплейта не класс, а какое -либо значение — не сложно и можно. А вот при создании функции я столкнулся с проблемой, подскажите, в чём же я не прав:


M>template<int BACK> int A( int p)

M>{
M> int bw = BACK;
M> ::printf(" backgownd = %d", bw);
M> ::printf(" parameter = %d\n", p);
M> return 4;
M>}

Особенностью MSVC++ 6.0 является то, что все параметры шаблона должны тем или иным образом участвовать в списке параметров функции. Чтобы удовлетворить этому требованию, иногда приходится вводить фиктивные параметры. В твоем случае это можно сделать так:

template<int BACK> int A(int p, char (*)[BACK] = NULL)
{
    int bw = BACK;
    printf(" backgownd = %d", bw);
    printf(" parameter = %d\n", p);
    return 4;
}
Best regards,
Андрей Тарасевич
Re[2]: темплейт функции с параметром - значением
От: Micker  
Дата: 21.11.01 18:46
Оценка:
Здравствуйте Андрей Тарасевич, Вы писали:

Большое спасибо за совет!
Жизнь, как игра —
идея паршивая,
графика обалденная...
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.