我有一個模板類結構如下返回inclass結構
//CFoo.hpp (header file)
template <typename T>
class CFoo {
struct SFoo {
T *ptr;
/* rest is irrelevant */
} *foo;
public:
/* omitting irrelevant parts */
SFoo* get();
};
現在,如果我實現的方法SFoo *獲得()內部文件頭一切正常漂亮。但是,如果我單獨聲明和定義,我的代碼將停止處理以下的編譯錯誤。
//CFoo.cpp (source code, example 1)
/* omitting irrelevant parts */
template <typename T>
SFoo* CFoo<T>::get() { return foo; } //ERROR HERE
錯誤:<where-is-the-error>: error: ‘SFoo’ does not name a type
//CFoo.cpp (source code, example 2)
/* omitting irrelevant parts */
template <typename T>
CFoo<T>::SFoo* CFoo<T>::get() { return foo; } //ERROR HERE
錯誤:<where-is-the-error>: error: need ‘typename’ before ‘CFoo<T>::SFoo’ because ‘CFoo<T>’ is a dependent scope
我期待着就如何解決這個問題的任何提示。提前致謝。
你試圖把在'typename'作爲最後的錯誤提示? – Timbo
@Timbo在哪裏放這個關鍵字?我想我說得對。 – Robin92