(I'm assuming that all A,B,C are objects of different classes. Are they ?)
Since they represent processes (..can you clarify that more ?..there maybe something wrong with the way you're approaching this...);
You can declare the abject A as a functor which returns a vector of the values and automatically generate the next value.
Example: (Put something like this in the public portion of the class)
Code:
vector<int> operator()() //If you do not understand this, read up on operator overloading.
{
vector<int> val;
val.push_back(CurrentValue());
val.push_back(B.CurrentValue());
val.push_back(C.CurrentValue());
GenerateNext(); B.GenerateNext(); C.GenerateNext();
return val;
}
After that you can call the object like a function and get back the three values.
vector<int> x = A();
x[0], x[1], and x[2] gives the three individual values.
And, you can tweak the fnction fuch that it takes an agrument, depending on which it returns only one value or all the three.