user2580974
user2580974

Reputation: 33

How do you call a class and its method when its stored in a pointer array

How do you use a pointer and call the class methods it points to?

For example:

Image *img[26];

Image IM = outputImage();
img[0] = &IM;

I want to call img[0], or IM's methods. I tried something like this but I received errors.

img[0].getPixel(0,1);

The error is "expression must have a class type"

Upvotes: 0

Views: 95

Answers (2)

dead programmer
dead programmer

Reputation: 4365

you can use following two methods: 1) use -> operator to the member function.

#include<iostream>
using namespace std;

class myclass
{
    public:
        void printHello()
        {
            cout<<"hello from  class"<<endl;
        }
};
int main()
{
    myclass *s[10];
    myclass inst;
    s[0]=&inst;
    s[0]->printHello();
    return 0;
}

2) use . after de-referencing the pointer.

#include<iostream>
using namespace std;

class myclass
{
    public:
        void printHello()
        {
            cout<<"hello from  class"<<endl;
        }
};
int main()
{
    myclass *s[10];
    myclass inst;
    s[0]=&inst;
    (*s[0]).printHello();
    return 0;
}

Upvotes: 0

Devolus
Devolus

Reputation: 22084

Since you are using a pointer array, you must dereference it as a pointer.

 img[0]->getPixel(0, 1);

And this:

 Image IM = outputImage();

should be:

 Image &IM = outputImage();

Assuming that outputImage() returns a reference.

Upvotes: 2

Related Questions