class A {
class B { }
B somefunction();
}
B A::somefunction() {
B bla;
return bla;
}
所以我的代码中有类似的东西。我收到一条错误说'B' does not name a type
。任何帮助,将不胜感激。附:我不允许更改界面。
答案 0 :(得分:4)
领先的返回类型在函数范围之外被解释;因此,如果在那里使用嵌套类型,则需要进行限定:
A::B A::somefunction() {
或者,从C ++ 11开始,您可以使用尾随返回类型,它在函数范围内被解释(如函数参数类型):
auto A::somefunction() -> B {
答案 1 :(得分:0)
B
的范围限定为A
,因此,为了引用B
,您需要使用范围解析运算符:A::B
。
因此A::B A::somefunction()
定义somefunction
应该有效。
答案 2 :(得分:0)
B在A类中,并且表现得像在A名称空间中一样。尝试:
class A {
class B { }
B somefunction();
}
A::B A::somefunction() {
B bla;
return bla;
}
答案 3 :(得分:0)
您对somefunction()
的定义应该是
A::B A::somefunction() {
B bla;
return bla;
}