I have two classes
class a {
public:
a(int i);
};
class b {
public:
b(); //Gives me an error here, because it tries to find constructor a::a()
a aInstance;
}
How can I get it so that aInstance is instantiated with a(int i) instead of trying to search for a default constructor? Basically, I want to control the calling of a's constructor from within b's constructor.
You need to call a(int) explicitly in the constructor initializer list:
b() : aInstance(3) {}
Where 3 is the initial value you'd like to use. Though it could be any int. See comments for important notes on order and other caveats.
Use an initialization list:
b::b() : aInstance(1) {}
Just use a constructor which is defined like this:
class b {
public:
b()
: aInstance(5)
{}
a aInstance;
};
I think you should use a pointer to 'a' like:
class b {
public:
b() : aInstance(new a(5)) {}
a *aInstance;
};
This way you will have defined behaviour. Of course you will need to free *aInstance in the destructor.