Khai báo class trong hàm có được không?

Bạn nào cho mình hỏi : có thể tạo ra 2 class được không ? , vì theo mình hiểu , VD : mình tạo ra 1 class là hosonhanvien , ở trong đó có rất là nhiều hàm : tên tuổi , ngày sinh , quê quán , … class thứ 2 là trinhdolamviec , ở trong đó lại có bằng cấp, sở trường công việc , tính toán 2 số , vd là như thế ^^ . khi chạy chương trình thì không được , cách mình làm có đúng không , và nếu sai thì sai ở chỗ nào ạ . !!

Bạn tạo bao nhiêu class cũng được nhé? Quan trọng là sử dụng như thế nào, mình chưa hiểu rõ ý bạn, quan hệ giữa 2 class đó là thế nào, có liên quan gì với nhau không ? Hay sử dụng riêng rẽ ???

VD nào vậy bạn ???

Nói rõ hơn về vấn đề bạn gặp phải đi @TuChiDo.

Xin lỗi A.ĐẠT nhé , e mới vào trang này hôm nay , chưa hiểu rõ về quy định , có gì mong anh thông cảm
đoạn code của mình như sau :

 // TwoClass.cpp : Defines the entry point for the console application.
//

#include "stdafx.h"
#include <iostream>
#include <string>
using namespace std;
int BienX;

class hosodangky // class 1 của mình
{
public:
	void chao()
	{
		cout << " chao cac ban den voi lop hoc lap trinh c++" << endl;
	}
	void abc()
	{
		//TẠO 2 CLASS NHƯ VẦY ĐƯỢC KHÔNG ?
		class dangkyhoso	// class 2 của mình
		{
		public:
			void tuoi()
			{
				int tuoi;
				cout << " ban bao nhieu tuoi " << endl;
				cin >> tuoi;
				cout << "- Toi " << tuoi << " tuoi " << endl;
			}
		};

	}
};

int main()
{
	hosodangky a;
	a.chao();
	dangkyhoso tinhtuoi;
	tinhtuoi.abc();
	system("pause");
}
1 Like

chỉ cần thêm dòng này #include “stdafx.h” là có thể làm 2 class hả bạn ?

Bài của bạn đưa lên hơi cẩu thả “public viết thành Public”, lỗi tùm lum… mình có chỉnh sửa lại format và dấu {} bị thiếu… Bạn xem mình sửa lại nội dung có đúng ý bạn hỏi k???
Còn về việc khai báo class thử 2, bạn không nên khai báo trong 1 hàm như vậy. Bài của bạn lỗi cơ bản ở dòng :smile:

Vì nó không hiểu class dangkyhoso ở đây là gì, vì bạn khai báo class dangkyhoso trong hàm Void abc(), tức là class đó chỉ dc hiểu trong hàm Void abc() đó mà thôi.

Đây là code class chứa class (Nested class), bạn có thể tham khảo :

#include "stdafx.h"
#include <iostream>
#include <string>
using namespace std;
int BienX;

class hosodangky // class 1 của mình
{
public:
	void chao()
	{
		cout << " chao cac ban den voi lop hoc lap trinh c++" << endl;
		//TẠO 2 CLASS NHƯ VẦY ĐƯỢC KHÔNG ?
	}
	class dangkyhoso	// class 2 của mình
	{
	public:
		void tuoi()
		{
			int tuoi;
			cout << " ban bao nhieu tuoi " << endl;
			cin >> tuoi;
			cout << "- Toi " << tuoi << " tuoi " << endl;
		}
	};

};

int main()
{
	hosodangky  a;
	a.chao();
	hosodangky::dangkyhoso tinhtuoi;
	tinhtuoi.tuoi();
	system("pause");
}

Mình fai bỏ vô ide của mình để chạy code bạn nên nó phát sinh thêm, không fai đâu, bạn đọc comment trên của mình nhé

    hosodangky  a; // class thứ nhất mình cho nó 1 cái thực thể là a.
a.chao(); //thực thể a gắn với hàn void chao .
hosodangky::dangkyhoso tinhtuoi; // đoạn này là mình chưa hiểu nè , mình mới chỉ biết là có ==  thôi chứ chưa biết :: là gì cả  và tại sao hosodangky::dangkyhoso là như nào hả bạn ??
tinhtuoi.tuoi();

Cái này người ta gọi là : đối tượng a (thể hiện a) gọi thực hiện phương thức Chao()

Vì bạn khai báo class dangkyhoso bên trong class hosodangky có nghĩa là class dangkyhoso có thể coi là 1 biến của class dangkyhoso bên trong class hosodangky có nghĩa là class dangkyhoso có thể coi là 1 biến củaclass hosodangky. (lần sau bạn đừng đặt tên class kiểu này, nhìn đau cả mắt, dễ nhầm).
toán tử :: dùng để truy xuất tới biến (struct, class..), function của 1 lớp trong c++;
Bạn hiểu hơn chửa ???

chửa hiểu hơn là mấy , đọc thêm vài lần ắt sẽ hiểu , tks :wink:

bạn cho mình hỏi thêm được không ?

phần này mình Ok , vì bạn đã nói class chứa class là mình hiểu rồi .
Vấn đề mình hỏi tiếp là liệu có thể tạo ra 2 class riêng mà chúng không chứa nhau ở trong đó . Vẫn lấy vd đoạn code của bạn sửa cho mình ở trên đó nhá .

Có chứ, bạn tạo bao nhiêu class cũng được mà.

Code

#include "stdafx.h"
#include <iostream>
#include <string>
using namespace std;
int BienX;

class hosodangky // class 1 của mình
{
public:
	void chao()
	{
		cout << " chao cac ban den voi lop hoc lap trinh c++" << endl;
		//TẠO 2 CLASS NHƯ VẦY ĐƯỢC KHÔNG ?
	}
	

};

class dangkyhoso	// class 2 của mình
	{
	public:
		void tuoi()
		{
			int tuoi;
			cout << " ban bao nhieu tuoi " << endl;
			cin >> tuoi;
			cout << "- Toi " << tuoi << " tuoi " << endl;
		}
	};

int main()
{
	hosodangky  a;
	a.chao();
	dangkyhoso tinhtuoi;
	tinhtuoi.tuoi();
	system("pause");
}
1 Like
83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?