我有下面的代碼有問題:模板的typedef類中不起作用
template <typename U>
class lamePtr
{
public:
typedef U* ptr;
};
template <typename U>
class smarterPointer
{
public:
void funFun()
{
typedef lamePtr<U> someType;
someType::ptr query;
}
};
正如你看到的,我有內部lamePtr一個typedef。在smarterPointer類中,我有一個函數funFun()。我想要做的是做另一個typedef someType。直到那條線,一切工作正常,直到我們到一些類型:: ptr查詢行。
我想在這裏發生的是「查詢」將變成lamePtr < U> :: ptr(一個簡單的值,而不是一個typedef;)。但是,我得到彙編錯誤(與海灣合作委員會4.4.3):
temp.cpp: In member function ‘void smarterPointer<U>::funFun()’:
temp.cpp:15: error: expected ‘;’ before ‘query’
我在做什麼錯在這裏?
相關,有很多關於爲什麼需要'typename'的信息:[我在哪裏以及爲什麼必須將'template'和'typename'放在依賴名稱上?](http://stackoverflow.com/questions/610245/where-and-why-do-i-have-to-put-template-and-typename-on-dependent-names) – 2011-04-02 17:40:28
將來,不要嘗試用html標籤格式化你的代碼。只需按原樣輸入,全部選中,然後單擊「{}」按鈕。 – 2011-04-02 17:44:18
謝謝,我將在未來記住這一點。感謝參考詹姆斯,我會花一些時間在那 – Melon 2011-04-02 18:16:26