《MFC程式設計師的WTL教程》第乙個例程的乙個錯誤

2021-06-06 23:52:02 字數 1210 閱讀 1526

《mfc程式設計師的wtl教程》第乙個例程在於說明atl的原理,其**如下:

#include templateclass b1

protected:

void printclassname()

;class d2 : public b1{

public:

protected:

void printclassname()

{std::wcout<<_t("this is d2")《實際上這段**是有問題。在vs 2005(帶sp1)環境編譯下出現以下編譯錯誤:

d:\wtllearn\lesson1\lesson1\lesson1.cpp(14) : error c2248: 'd2::printclassname' :cannot access protected member declared in class 'd2'

1>        d:\wtllearn\lesson1\lesson1\lesson1.cpp(38) : see declaration of 'd2::printclassname'

1>        d:\wtllearn\lesson1\lesson1\lesson1.cpp(34) : see declaration of 'd2'

1>        d:\wtllearn\lesson1\lesson1\lesson1.cpp(12) : while compiling class template memberfunction 'void b1::sayhi(void)'

1>        with

1>        [

1>            t=d2

1>        ]

1>        d:\wtllearn\lesson1\lesson1\lesson1.cpp(35) : see reference to class templateinstantiation 'b1' being compiled

1>        with

1>        [

1>            t=d2

1>                                    ]

問題在於基類b1無法訪問派生類d2的保護許可權的成員函式。解決辦法是將

d2:: printclassname

函式改為public

許可權。我想atl中所有需要過載的函式應該都是public的。

《MFC程式設計師的WTL教程》第乙個例程的乙個錯誤

mfc程式設計師的wtl教程 第乙個例程在於說明atl的原理,其 如下 include templateclass b1 protected void printclassname class d2 public b1 public protected void printclassname std...

第乙個MFC程式

1.mfc使用c 語言把windows sdk api函式包裝成了幾百個類 2.最重要的兩個mfc類 2 cframewnd 3.兩種方法 1 乙個繼承 2 兩個繼承 4.具體實現 4.0vs設定 1 正常建立控制台程式 2 設定專案屬性 在常規中 a.將mfc的使用改為 在靜態庫中使用mfc 動態...

來自程式設計師的第乙個部落格

哈哈,第一次寫部落格好緊張。別人說做作為一名合格的程式設計師一定要有自己的部落格。以後我會在這裡記錄的我的學習之路。其實做程式設計師也有兩年了,一直沒有寫過部落格 不合格 最開始做程式設計師時,是在一家外包公司,天天寫靜態頁面,感覺自己完全學不到東西。所以我辭職了,在成都溫江又找了一家初創型公司,前...