I am trying to implement the Visitor Pattern for an object structure which has methods with different return types (string, signed int, unsigned int, etc).
Now, in
The Accept
method in the type hierarchy is just a dispatcher, and has no return type. If what you want is the visitation to produce a value the simplest way would be to add that as part of the state of the visitor:
struct times2 : visitor {
double value;
times2() : value() {}
void operator()( int x ) { value = x * 2; }
void operator()( double x ) { value = x * 2; }
};
object o;
times2 v;
o.accept( v );
std::cout << "Result is " << v.value << std::endl;
Then again, the specific details of the visitor will vary with your implementation, but the idea is that you can store the result in the visitor rather than return it.