使用在另一个类中定义的类的类型定义函数

时间:2014-12-15 18:09:40

标签: c++ class

class A {
    class B { }
    B somefunction();
}

B A::somefunction() {
   B bla;
   return bla;
}

所以我的代码中有类似的东西。我收到一条错误说'B' does not name a type。任何帮助,将不胜感激。附:我不允许更改界面。

4 个答案:

答案 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;
 }