30/09/2018, 16:16

Hàm trong class

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 ạ . !!

Phạm Hoàng Tuấn viết 18:20 ngày 30/09/2018

có thể tạo ra 2 class được không

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 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 ạ

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

BaoLe viết 18:21 ngày 30/09/2018

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

asdasdasd viết 18:28 ngày 30/09/2018

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");
}
asdasdasd viết 18:26 ngày 30/09/2018

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

Phạm Hoàng Tuấn viết 18:26 ngày 30/09/2018

dangkyhoso tinhtuoi;

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

dangkyhoso tinhtuoi;

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");
}
Phạm Hoàng Tuấn viết 18:18 ngày 30/09/2018

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é

asdasdasd viết 18:25 ngày 30/09/2018
    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();
Phạm Hoàng Tuấn viết 18:29 ngày 30/09/2018

a.chao(); //thực thể a gắn với hàn void chao .

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()

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 ??

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 ???

asdasdasd viết 18:18 ngày 30/09/2018

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

asdasdasd viết 18:32 ngày 30/09/2018

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á .

Phạm Hoàng Tuấn viết 18:28 ngày 30/09/2018

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 đó

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");
}
Bài liên quan
0