Class chứa class trong C++

#include <iostream>
#include <conio.h>

using namespace std;

class MangToaDo
{
public:
	int n;

	MangToaDo() 
	{
		n = 0;
	}

	class ToaDo
	{
	public:
		int x, y;

		ToaDo() {}
		ToaDo(int a, int b)
		{
			x = a;
			y = b;
		}
	};

	ToaDo mToaDo[10];

	void ThemToaDo(ToaDo td)
	{
		mToaDo[n] = td;
		n++;
	}
};

int main()
{
	MangToaDo mToaDo;
	ToaDo td(3, 2); //không truy cập được

	mToaDo.ThemToaDo(td);

	getch();
	return 0;
}

Trên đây là code của em về 2 class lồng nhau. Em muốn thực hiện được trong hàm main khai báo 1 ToaDo và thêm tọa độ đó vào trong Mảng Tọa Độ. Giả sử để public hết mà sao nó vẫn không có quyên truy cập đến class ToaDo ạ?
Sư huynh nào có thể giải đáp giúp em ạ!
Em xin chân thành cảm ơn.
Chúc các sư huynh 1 ngày code vui vẻ.

1 Like
MangToaDo::ToaDo td(2, 3);

Nếu muốn là con trỏ thì

MangToaDo::ToaDo * td = new MangToaDo::ToaDo(2, 3);
2 Likes

Nhưng cái bài tập của em trong hàm main bắt buộc dùng câu lệnh ToaDo td(2, 3); :’((((

Nếu vậy thì mình thêm typedef vô trước hàm main nữa :smiley:

typedef MangToaDo::ToaDo ToaDo;

Còn ko tạo cái class ToaDo bên ngoài luôn.

2 Likes

cảm ơn Sư huynh nhiều ạ :*
Cho em hỏi thêm xíu là cái typedef nó mang ý nghĩa là gì ạ?
Em xin chân thành cảm ơn.
Em làm phiền sư huynh quá :smiley:

typedef có công dụng tạo tên giả cho một kiểu dữ liệu nào đấy.

Như bây giờ mình có con trỏ char = chuỗi (string)
thì thay vì mình ghi char * nhiều người ko hiểu or ngữ nghĩa nó ko tốt bằng, mình có thể tạo ra một tên giả khác cho nó bằng typedef

typedef char * string;
2 Likes

Thank sư huynh nhiều ạ :smiley:

1 Like

6 posts were split to a new topic: Viết hàm đổi tên đối tượng học sinh

83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?