2012-07-09 47 views
0

我正在構建一個應用程序,其中有多個類從一個基類繼承。比方說,我有這樣的聲明:可重用類 - 使用「抽象」而不是預定義

ref class WorkScreenBase abstract 
{ 
internal: 
    WorkScreenBase(void); 
    bool isLoaded; 
} 

我有實現它,例如幾類:

ref class MainScreen : public WorkScreenBase 
{ 
internal: 
    MainScreen(void); 
    ~MainScreen(void); 
} 

在應用程序中的另一部分,我想對任何潛在的實施的容器WorkScreenBase,所以我試圖使用:

WorkScreenBase^ myCurrentBase; 

但是,看起來這是非法的。解決這個問題最好的辦法是什麼?

更新:我可以使用MainScreen^ myCurrentScreen,但更願意使用基類作爲參考點的靈活性的原因。

+0

你爲什麼說「看起來這是違法的」? – 2012-07-09 21:25:11

+0

'WorkScreenBase^myCurrentBase'在C++中是非法語法。刪除了C++標記。也許這是C++ - CLI或其他非C++語言? – 2012-07-09 21:28:30

+0

這條線上有一個「丟失的類型說明符」。據我瞭解,由於顯而易見的原因(抽象類),我無法將其保留爲對象,所以我想知道可能是什麼問題。 – 2012-07-09 21:29:32

回答

0

該問題以我沒有預料到的方式修復(至少根據編譯器錯誤拋出)。問題出在頭文件交叉引用中。不知何故,無論是與標頭衛士和#pragma once,我結束了一個通知.h參考。

所以,結論

  • 編譯器可以拋出,可能無法準確描述 問題的錯誤。
  • 仔細檢查循環引用的標題。頭部守衛和#pragma once是好的,但不會幫助你反對。