tried using return(5,4); but this is an syntax error.
That is not a syntax error. (5,4) is a valid expression and here , is an operator. So the expression (5,4) evaluates to the rightmost operand, which is 4. Hence it will return 4.
Now coming to your problem: define a struct if any existing one doesn't help you, and return an object of struct instead, as:
struct values
{
int i;
int j;
char *other;
};
values f()
{
values v = {/*....*/};
//...
return v;
}
And if type of all values is same, then you can use std::vector as:
#include <vector> //must include it!
std::vector<int> f()
{
std::vector<int> v;
v.push_back(5);
v.push_back(4);
//so on
//...
return v;
}
There are other containers as well, viz. std::map, std::list, std::stack, etc. Use which suits you the best. There is also std::pair which holds only two values, as the name implies.