我有一个模板类结构如下返回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