C++結構體嵌套


#include <iostream>
#include <string>
using namespace std;

//學生結構體
struct Student {
private:
	string s_name;//學生姓名
public:
	//構造函數
	Student(string name) {
		s_name = name;
	}
	//setter&getter
	void setName(string name) {
		s_name = name;
	}
	string getName() {
		return s_name;
	}
	//自我介紹
	void selfIntroduction() {
		cout << "嗨,大家好,我是" << s_name << endl;
	}
};

//老師結構體
struct Teacher {
private:
	string t_name;//教師姓名
	struct Student* m_stus;//教師指導的學生,這里用指針,如果是數組得指明長度,但是數組名不可變,不能set
	int m_stus_size;//教師指導的學生的個數
public:
	//構造函數
	Teacher(string name, struct Student* stus, int stus_size) {
		t_name = name;
		m_stus = stus;
		m_stus_size = stus_size;
	}
	//setter&getter
	void setName(string name) {
		t_name = name;
	}
	string getName() {
		return t_name;
	}
	void setStus(struct Student stus[]) {//其實以指針形式接收
		m_stus = stus;
	}
	Student* getStus() {
		return m_stus;
	}
	void setStusSize(int stus_size) {//其實以指針形式接收
		m_stus_size = stus_size;
	}
	int getStusSize() {
		return m_stus_size;
	}
	//自我介紹
	void selfIntroduction() {
		cout << "大家好,我是" << t_name <<"老師,我帶有"
			<<m_stus_size<<"個學生,";
		if (m_stus_size >= 2) {
			cout << "分別是";
		}
		for (int i = 0; i < m_stus_size; i++) {
			if (i == m_stus_size - 1) {
				cout << m_stus[i].getName() <<",";
			}
		    else if (i == m_stus_size - 2) {
				cout << m_stus[i].getName() << "和";
			}
			else {
				cout << m_stus[i].getName() << "、";
			}
		}
		cout << "希望大家努力學習,不負韶華。" << endl;
	}
};

int main() {
	struct Student stus[] = {
		{"張三"},
		{"李四"},
		{"王五"}
	};

	int len = sizeof(stus) / sizeof(stus[0]);

	Teacher t = {"羅翔",stus,len};
	
	t.selfIntroduction();

	system("pause");
	return 0;
}


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM