سلام . من در کد زیر سازنده کلاس CP(enumA e)
را از سازنده CP(B * b)
فراخوانی می کنم ولی اینگار مقداردهی نمیشه و مقادیر چاپ شده اشتباهه. توی vs2012 کامپایل می کنم.
#include <iostream>
using namespace std;
class A;
enum class enumA{m1,m2};
class B{
public:
B(enumA enum_val):enum_val_(enum_val){}
enumA enum_val_;
};
class CP{
public:
CP(enumA e){
if (e == enumA::m1){
value1_ = 100;
value2_ = 200;
}
else {
value1_ = 10;
value2_ = 20;
}
}
CP(B * b){
CP(b->enum_val_);
}
void print(){
cout << value1_ << endl << value2_ << endl;
}
int value1_;
int value2_;
};
class A{
public:
A(B * b):b_(b),cp_(b){};
CP cp_;
B *b_;
};
int _tmain(int argc, _TCHAR* argv[])
{
B *b = new B(enumA::m2);
A *a = new A(b);
a->cp_.print();
return 0;
}