Russian Qt Forum

Компиляторы и платформы => Visual C++ => Тема начата: Admin от Июнь 11, 2005, 11:17



Название: Раздельная компиляция
Отправлено: Admin от Июнь 11, 2005, 11:17
Есть файлик

my_func.cpp

Код:
R my_func.cpp(R a)
{
 return a*3.0;
}


Хочется сделать float и double версию этой функции, причем не хочется плодить еще 1 файл.

Решение нашел пока такое:

my.cpp

Код:
#define R float
#include "my_func.cpp"
#define R double
#include "my_func.cpp"


Есть ли еще решения этой проблеммы?


Название: Раздельная компиляция
Отправлено: lepsai от Июнь 11, 2005, 11:47
ну товарищ, ты даёшь :)

template<typename T> T MyFunc(const T & a)
{
return 3.0*a;
}

double calc = MyFunc<double>(10);
int calc2 = MyFunc<int>(10);
....


Название: Раздельная компиляция
Отправлено: Admin от Июнь 11, 2005, 12:55
ага, тоже вариант, только придется кучу кода переписывать

а еще способы есть?


Название: Раздельная компиляция
Отправлено: lepsai от Июнь 11, 2005, 13:08
не, другиx вариантов нет: шаблоны или typedef

Код:

#ifdef _USE_FLOAT
typedef float value_type
#else
#ifdef _USE_DOUBLE
typedef double value_type
#endif
#else
#error value type undefined
#endif
#endif


value_type MyFunc(const value_type & a);