我的问题是,我需要先定义接口,然后在代码中进一步实现它,但我的问题是,当我实现方法时,应该返回已知类的函数类型似乎在类外面是未知的。
这是我的代码:
class Test {
class Inner {
};
public:
Inner* foo (void);
};
Inner* Test::foo(){
}
这段代码因为函数外部未知类型 Inner 而产生错误。有没有人可以帮我编写一个简单的函数,仅返回类内定义的类型?
感谢任何帮助。
我的问题是,我需要先定义接口,然后在代码中进一步实现它,但我的问题是,当我实现方法时,应该返回已知类的函数类型似乎在类外面是未知的。
这是我的代码:
class Test {
class Inner {
};
public:
Inner* foo (void);
};
Inner* Test::foo(){
}
这段代码因为函数外部未知类型 Inner 而产生错误。有没有人可以帮我编写一个简单的函数,仅返回类内定义的类型?
感谢任何帮助。
你需要
Test::Inner* Test::foo(){
既然没有人提到,你也可以在C++11中这样做:
auto Test::foo() -> Inner * {...}
如果完全限定名称很长,可以使用这种方法。 在C++14中,您可以省略尾随类型部分,只需执行:
auto Test::foo() {...}
Inner是一个嵌套类,在外部类Test中需要完全限定:
Test::Inner* Test::foo() {
//...
}
因为在全局范围内,Inner
确实是未知的,只有Test::Inner
,所以Test
内部的Inner
是已知的。你也可以在全局范围内拥有另一个Inner
,就像Test
一样,这将是另一个Inner
,而不是Test::Inner
。
class Test {
class Inner {
};
public:
Inner* foo (void);
};
Test::Inner* Test::foo(){
//^^^^
}
严格来说,如果您使用的是最新的编译器,甚至可以使用auto关键字,但这样可能会稍微减少代码的全面性。
class Test {
class Inner {
};
public:
Inner* foo (void);
};
Test::Inner* Test::foo(){
}