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

Defining a function with the type of a class defined within another class

本文关键字:定义 类型 函数 另一个      更新时间:2023-10-16
class A {
    class B { }
    B somefunction();
}
B A::somefunction() {
   B bla;
   return bla;
}

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

前导返回类型在函数范围之外进行解释;因此,如果在此处使用嵌套类型,则需要限定:

A::B A::somefunction() {

或者,从 C++11 开始,您可以使用尾随返回类型,该类型(如函数参数类型(在函数的作用域中进行解释:

auto A::somefunction() -> B {
B的作用

域为 A ,因此为了引用B,您需要使用范围解析运算符:A::B

因此,像A::B A::somefunction()这样的东西可以定义somefunction

B 在 A 类中,其行为有点像在 A 命名空间中。尝试:

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

你对somefunction()的定义应该看起来像

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