如果您有一个由其他子类组成的类,那么如何进行修改,以便如果您修改该子类的属性,则该更改会反映在组合类中? (很抱歉,这是一个基本问题,我对对象不是很好)
例如,假设我有一个由两个三明治对象组成的餐。餐点和三明治都具有卡路里变量,但是如果我在其中一个三明治对象中添加一些奶酪,我希望以此方式更新餐点中的卡路里数量。有什么好的方法可以做到这一点吗?
例如,在以下(C ++)代码中,在主菜中添加奶酪不会更新餐时的卡路里。 (顺便说一句,我不知道实际食物中有多少卡路里)
#include <iostream>
struct Sandwich
{
int calories = 0;
Sandwich(int calories): calories {calories} {}
void AddCheese() { calories += 50; }
};
struct Meal
{
Sandwich entree;
Sandwich main;
int calories = 0;
Meal(const Sandwich& entree, const Sandwich& main)
: entree {entree}, main {main}, calories {entree.calories + main.calories} {}
};
int main()
{
Sandwich toastie(500);
Sandwich hoagie(1500);
Meal lunch(toastie, hoagie);
lunch.main.AddCheese();
std::cout << "lunch.entree.calories = " << lunch.entree.calories << std::endl;
std::cout << "lunch.main.calories = " << lunch.main.calories << std::endl;
std::cout << "lunch.calories = " << lunch.calories << std::endl;
return 0;
}
输出:
lunch.entree.calories = 500
lunch.main.calories = 1550
lunch.calories = 2000