Re: template class question
On Jun 1, 5:56 am, girays <selcukgi...@gmail.com> wrote:
Hello everyone,
I have a simple problem what I don't know the exact syntac for this.
My code is shown below:
enum LengthType
{
LENGTH_METER = 0,
LENGTH_KMETER,
LENGTH_YARD, // 1 yard = 0,914 me=
ter
LENGTH_KYARD
};
add conversion ratio template
template <LengthType fromType, LengthType toType>
struct ConvRatio;
template <>
struct ConvRatio <LENGTH_METER, LENGTH_KMETER>
{ enum { value = 1000 }; };
// if value is not always integer,
// use a static member function to return a float
// other conversion ratios go here ...
template <LengthType L>
class Length
{
public:
Length(void);
~Length(void);
// Length<toType> convertTo(LengthType toT=
ype) const; ???????
template <LengthType toType>
Length<toType> convertTo() const
{ return m_value * ConvRatio<L, toType>::value; }
private:
LengthType m_type;
float m_value;
};
template <LengthType L>
Length<L>::Length( void )
: m_type(L)
, m_value()
{
}
You can see the lined marked ??????? at the end of line. I want to
convert from one Length object to another Length object. How can I
write this simple (may be not simple but I don't know how to do with
template code) code?
Suppose you have constructor
Length::Length(float);
and define your Length destruction;
Here is a test case:
int main()
{
Length<LENGTH_METER> len1(15);
Length<LENGTH_KMETER> len2 = len1.convertTo<LENGTH_KMETER>();
//std::cout << len2 << std::endl; // need to friend the ostream
inserter
}
--
Best Ragards
Barry