忽略這個問題,才發現在我的代碼錯誤,標誌它類型檢測
這是「完全指南模板」中刪除。 19.2
化合物類型是從其他類型構建的類型。簡單的複合類型包括普通類型,指針類型,引用類型,甚至數組類型。它們是從單一基本類型構建的。類類型和函數類型也是複合類型,但是它們的組合可以涉及多種類型(對於參數或成員)。簡單化合物類型可以使用部分專業化進行分類。我們先從描述比類類型和枚舉類型(後者被分別處理的)其它化合物類型一個性狀類的通用定義:
// types/type2.hpp
template<typename T>
class CompoundT { // primary template
public:
enum { IsPtrT = 0, IsRefT = 0, IsArrayT = 0,
IsFuncT = 0, IsPtrMemT = 0 };
typedef T BaseT; //This suppose to be different
typedef T BottomT; //to this! But is typedef'ed in the same way! FFS!
typedef CompoundT<void> ClassT;
};
的構件類型BASET是對直接型的同義詞在其上的模板參數類型T構建。另一方面,BottomT指的是構建T的最終非指針,非參照和非數組類型。例如,如果T是int * ,那麼BaseT將是int,而BottomT將是int。
是否做到了這一點,並嘗試過並猜測哪些方法無效。對於int ** BaseT是int **和BottomT是相同的。對我來說,很明顯,這本書有一個錯誤。如何在地球上相同的typedef'ed類型可以是不同的?對我來說它不能。我想知道應該在那裏(在階級decl。),使其工作。
謝謝。
爲什麼要刪除它的標誌?你可以自己刪除它 – 2010-10-09 16:50:08
@ArmenTsirunyan,顯然,他不能。你回答了他的問題。我相信你知道,只有在沒有得到回答的情況下,主人才能刪除問題:) – azizbekian 2013-03-02 10:52:25