Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
162 views
in Technique[技术] by (71.8m points)

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

When using a function that requires use of the subclass, I have an error that said subclass hasn't been declared. So how would I declare this subclass without having an issue of redeclaration later?

This is a general idea of what the code would look like:

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

So in this case, how would I declare Node so that it could be used in myFunction without redeclaring it later?

See Question&Answers more detail:os

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Reply

0 votes
by (71.8m points)

So how would I declare this subclass[nested class] without having an issue of redeclaration later?

By declaring (and defining) the nested class before declaring a member function with an argument that depends on the nested class declaration.

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);
};

While a forward declaration would be sufficient to declare a function with a pointer argument, nested classes cannot be forward declared.


与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
OGeek|极客中国-欢迎来到极客的世界,一个免费开放的程序员编程交流平台!开放,进步,分享!让技术改变生活,让极客改变未来! Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

...