我的问题是我需要首先定义我的接口,然后在代码中进一步实现它,但我的问题是,当我实现方法时,应该返回类内部已知类型的函数似乎在类外部未知.
这是我的代码:
class Test {
class Inner {
};
public:
Inner* foo (void);
};
Inner* Test::foo(){
}
Run Code Online (Sandbox Code Playgroud)
此代码产生错误,因为类型Inner对于类外部的函数是未知的.任何人都可以帮助我如何创建只返回类内部定义的类型的简单函数?
感谢您的任何帮助.
你需要
Test::Inner* Test::foo(){
Run Code Online (Sandbox Code Playgroud)
}
如果成员函数定义在类定义之外,那么返回类型不在类范围内,与函数的其余部分不同,因此您需要显式限定返回类型.
既然没人提到它,你也可以在C++ 11中做到这一点:
auto Test::foo() -> Inner * {...}
Run Code Online (Sandbox Code Playgroud)
如果完全限定名称很长,这可能很有用.在C++ 14中,您可以不使用尾随类型部分,只需执行以下操作:
auto Test::foo() {...}
Run Code Online (Sandbox Code Playgroud)
这将推断出返回类型.
内部类是嵌套类,外部类Test必须是完全限定的:
Test::Inner* Test::foo() {
//...
}
Run Code Online (Sandbox Code Playgroud)
因为在全局范围内Inner确实是未知的,只有Test::Inner,所以Inner里面Test是已知的。您还可以Inner在全局范围内有另一个,与 相同Test,这将是 other Inner,而不是Test::Inner。
| 归档时间: |
|
| 查看次数: |
202 次 |
| 最近记录: |