SimCor
SimCor

Reputation: 300

C++ using object of a class declared after

for some reason i have to declare multiple classes in the same file, and in paricoular I have to use an object of one of these classes before declaring, here is an example:

#include<iostream>
using namespace std;

class square{

    double side;
    double area;
    square(double s){
        side = s;
    }

    void calcArea(){
        area = side*side;
    }

    void example(){
        triangle t(2.3,4.5);
        t.calcArea();
    }

};

class triangle{

    double base;
    double height;
    double area;

    triangle(double s,double h){
        base = s;
        height = h;
    }

    void calcArea(){
        area = (base*height)/2;
    }
};

int main(){ 
}

You can see that in example() method in square class, I use an object belonging to class triangle that is declared after its use. There's a way in order to let work this pieces of code?

Upvotes: 3

Views: 136

Answers (1)

flogram_dev
flogram_dev

Reputation: 42888

Since square needs triangle, but triangle doesn't need square, you can simply change the order of the class definitions:

class triangle {
    // ...
};

class square {
    // ...
};

Or, since example is the only thing in square that needs triangle, define example after the definition of triangle:

class square {
    // ...
    void example();
};

class triangle {
    // ...
};

void square::example() {
    triangle t(2.3,4.5);
    t.calcArea();
}

Upvotes: 3

Related Questions