subscript op and function call op

I cannot get this to compile: problems with the operators

class FOO {

             int operator () (void) {
             int operator [] (unsigned index) {

             int array[10];

FOO *foo;

int main(void)  {
     foo = new FOO();
    int result = (some boolean expresion) ? foo[3] : 0;   // compiler does not foo[3] in this line
    int result2 = (some boolean expression) ? foo(3) : 0;   // compiler does not like foo(3) either

    delete foo;
    return 0;


I tried this in both watcom c/c++ 10.0b and borland 5.02 c++
Who is Participating?
nietodConnect With a Mentor Commented:
answer coming.
Your Foo[3] is close, the only problem is that Foo is not a FOO object, it is a pointer to a FOO object.  If you declared it as a FOO, like

FOO Foo;


int i = Foo[3];

would work.

You can fix this by declaring Foo as a FOO as shown above or by making it a reference, like

FOO &Foo = new FOO;

(Kind of unusual, but works.)  Or you can continue to keep Foo a pointer to FOO and change your syntax with the [] operator, like

FOO *Foo;
int i = (*Foo)[3];

Obviously, your attempt to use parenthesis (that is, Foo(3)) has the same problem as well as the fact that the parenthesis operator does not accept an integer parameter.  Thus you could change Foo to an object or a reference to an object and then you could do Foo().  Or you can keep it a pointer and do (*Foo)().
Question has a verified solution.

Are you are experiencing a similar issue? Get a personalized answer when you ask a related question.

Have a better answer? Share it in a comment.

All Courses

From novice to tech pro — start learning today.