On 1 Apr, 06:00, "Jim Langston" <tazmas...@rocketmail.com> wrote:
"Hayrola" <Niklas_Ha...@home.se> wrote in message
news:1175431613.662030.202900@y66g2000hsf.googlegroups.com...
I have two vaiable types, named A and B. These are of the same type,
int, but their values must be treated differently before printing.
eg:
typedef int A;
typedef int B;
void func(A val)
{
VIPfunction(val);
std::cout << val << std::endl;
}
void func(B val)
{ //Error points to this line
std::cout << val << std::endl;
}
This gives me the following error: "function 'void func(A)' already
has a body"
Is there an easy way to solve this, or
is there another way to accomplish what i am trying to do?
Basically, you are trying to do two different things with the same
type
(int). One way would be to have 2 different functions, one with the
VIPfunction, one without.
Another way would be to wrap A and B in a structure or class. Then
you
could make a func template and specialize for type B (which would be a
structure).
The questionn becomes, they are both ints. Calling one A and one B in
a
typedef doesn't mean much. If you need to differentiate between them
then
just keep them straight yourself somehow.
I can see what you are trying to accomplish, but the question is why?
How
does this help your pogram? Depending on what you are actually trying
to
achieve would say how it could be done.
To clarify what i am doing, A represents a row number, and B
represents a column number.
In the good ol' game chess, rows have numbers (1234...), and columns
have letters (ABCD...).
Therefore the need to have them use different functons.
The already existing (C style) code assumes that A and B are ints, and
uses memsets and memcopys everywhere.
A solution has sprung into my mind, but i dont know if its a very good
one:
void func2(A val1, B val2 = -255)
{
if(val2 == -255)
{
VIPfunc();
std::cout << val1 << std::endl;
}
else
{
std::cout << val2 << std::endl;
}
}
any comments on that?
In chess rows go from 1 to 8. Colums go from A to H. No other values
legitimate.