如何正确声明子类?(C++)

How to properly declare a subclass? (C++)

本文关键字:C++ 子类 何正确 声明      更新时间:2023-10-16

当使用需要使用子类的函数时,我有一个错误,该子类尚未声明。那么我将如何声明这个子类而不会在以后重新声明的情况下呢?

这是代码外观的一般概念:

class MyClass {
public:
    void myFunction(Node* myNode);
private:
    class Node {
        public:
            Node();
            Node(string myString, int myInt);
            ~Node();
            string m_string;
    private:
        int m_int;
    }
};

那么在这种情况下,我将如何声明 Node,以便它可以在 myFunction 中使用,而无需稍后重新声明它?

那么我将如何声明这个类[嵌套类]而不会在以后重新声明的情况下呢?

通过在声明(和定义)嵌套类

之前声明(和定义)嵌套类,然后声明依赖于嵌套类声明的参数的成员函数。

class MyClass {
private:
    class Node {
        public:
            Node();
            Node(string myString, int myInt);
            ~Node();
            string m_string;
    private:
        int m_int;
    }
public:
    void myFunction(Node* myNode);
};

虽然前向声明足以声明带有指针参数的函数,但嵌套类不能向前声明。