class AP_Vehicle {
public:
struct FixedWing { /* ... */ };
struct MultiCopter { AP_Int16 angle_max; };
};
static AP_Vehicle::MultiCopter aparm; // 這行代碼含義?提問者誤以為 aparm 是繼承了 MultiCopter 的函數/類。
FixedWing 和 MultiCopter 是 AP_Vehicle 作用域內的獨立結構體類型(巢狀類型)。class Derived : public Base { /* ... */ };需在類定義時用冒號指定基類。巢狀類定義中 沒有冒號繼承列表,故無繼承。
static AP_Vehicle::MultiCopter aparm; 含義:
AP_Vehicle::MultiCopter:作用域解析,指定類型為外層類內部的 MultiCopter。aparm:定義一個該類型的靜態存儲期對象(變量)。static:若在全局/命名空間作用域,表示內部鏈接(僅本編譯單元可見);若在類內,表示靜態成員變量(需類外定義)。結論:這只是創建了一個名為 aparm 的 MultiCopter 結構體變量,與繼承毫無關係。
Vehicle::Params::FixedWing)。: public Base。AP_Vehicle::MultiCopter AP_Vehicle::aparm;)。