này mẫu mã của tôi:Gọi hàm tạo của lớp khác thông qua danh sách Khởi tạo. Có vấn đề
#include <iostream>
using namespace std;
class Base
{
public:
Base (int v, char z) {x=v;y=z;};
int x;
char y;
};
class Bar
{
public:
Bar(int m, char n):q(m),s(n),base(q,s){};
Base base;
int q;
char s;
};
int main()
{
Bar barObj(5,'h');
cout << barObj.base.x << barObj.base.y << endl;
return 0;
}
Tại sao tôi lại nhận được một sản lượng 0
? http://ideone.com/pf47j
Ngoài ra, nói chung, phương pháp đúng để tạo ra một đối tượng thành viên trong lớp khác và gọi constructor của đối tượng đó là gì, như đã làm ở trên với cơ sở đối tượng của class Base
, bên class Bar
?
'Base base;' không 'Base base (int v, char z);'. Đọc một cuốn sách thích hợp. –
Mã trong liên kết của bạn khác với mã bạn có trên – mathematician1975
Ngoài những gì Cat Plus Plus đã nói, bạn cần sử dụng 'm' và' n'. 'q' và' s' chưa được khởi tạo trước khi xây dựng 'base'. – IronMensan