我有這樣的鹼和這些派生類C++:訪問父類
class AlarmType
{
public:
unsigned int alarmIndex;
};
class TrendAlarmType : public AlarmType
{
public:
typedef enum
{
decreasing = 0, //will be used as index apart from enum
steady,
increasing
} Trend_types;
Trend_types alarmIndex2;
};
class ThresholdAlarmType : public AlarmType
{
public:
typedef enum
{
low = 0, //will be used as index apart from enum
lowmid,
highmid,
high,
} Threshold_types;
Threshold_types alarmIndex3;
};
這裏alarmIndex2
和alarmIndex3
是不同類型的的構件,從而AlarmType::alarmIndex
不應該存在。 是否可以聲明模板 理想情況下,alarmIndex
將是基類的模板成員,alarmIndex2 & 3
將不存在。可能嗎?我想實現AlarmType
爲模板類
template< typename T>
class AlarmType
{
public:
unsigned int alarmIndex;
};
,然後嘗試從派生類訪問alarmIndex
如下
alarmIndex<Trend_types> = tt; OR
alarmIndex<Threshold_types> = tt;
我得到的大量啓動了「錯誤的錯誤:預期「{」令牌」上線
class TrendAlarmType : public AlarmType
{ ...
,如果我嘗試添加型我想
之前類名class TrendAlarmType : public AlarmType<Trend_types>
{ ...
Trend_types
尚未申報。所以我陷入了其他麻煩。有沒有辦法在基類中聲明變量?
謝謝
那麼,你的主要錯誤是你忘記用分號終止你的類聲明。先做,然後看看還有什麼錯誤。 – paddy
它從來沒有在代碼上的錯誤。我只是沒有從我的文件複製一切。修正了這裏的條目,以避免混淆。 – nass
我覺得有些事情......對你管理問題的方式很陌生。對於繼承,看起來好像你不能刪除繼承類的一部分,而是在不對基類的報警索引類型進行頂級替換的情況下替換它。理想的方法是在實例化類時提供枚舉類型,然後在名稱空間,頭部或代碼部分可訪問的某處存在枚舉。 – VermillionAzure