M
Matthias Buelow
Hi,
I'm not sure if this is possible with C++ at all but what I'd like to
have is some kind of overloaded default evaluation of a class (or the
instantiated object), that is, instead of the object value, a member
function of the object is called, and that value returned, for example,
I could make a new class for characters:
struct Char {
char c;
Char(char c_) : c(c_) {}
bool isascii();
// ...
};
Now in a program fragment, I don't want to access the member "c"
explicitly or call a getter function. What I'd like to do is the following:
...
Char ch('a');
... ch ...; // some code, where ch is to have type char
// and yield ch.c
To make it a bit more clear, hypothetically, I'd like to have a member
function "eval" (or so), that is treated specially for each object, and
that is automatically called if the object's value is to be determined:
struct Char {
char c;
...
char eval() { return c; }
...
};
so that f(ch) would be equivalent to f(ch.eval()).
Kind of like a counterpart to a constructor, only for return values.
In some cases this probably could be achieved with operator overloading
(which would be tedious) but (imho) not in the case of a function call.
Is there any way to do something like this?
I'm not sure if this is possible with C++ at all but what I'd like to
have is some kind of overloaded default evaluation of a class (or the
instantiated object), that is, instead of the object value, a member
function of the object is called, and that value returned, for example,
I could make a new class for characters:
struct Char {
char c;
Char(char c_) : c(c_) {}
bool isascii();
// ...
};
Now in a program fragment, I don't want to access the member "c"
explicitly or call a getter function. What I'd like to do is the following:
...
Char ch('a');
... ch ...; // some code, where ch is to have type char
// and yield ch.c
To make it a bit more clear, hypothetically, I'd like to have a member
function "eval" (or so), that is treated specially for each object, and
that is automatically called if the object's value is to be determined:
struct Char {
char c;
...
char eval() { return c; }
...
};
so that f(ch) would be equivalent to f(ch.eval()).
Kind of like a counterpart to a constructor, only for return values.
In some cases this probably could be achieved with operator overloading
(which would be tedious) but (imho) not in the case of a function call.
Is there any way to do something like this?