I'm getting an error "invalid use of incomplete type 'class map'

前端 未结 2 1269
我在风中等你
我在风中等你 2020-12-13 08:43

I am making a basic text based RPG sorry if my question is stupid because im new to c++. So basically I have a small combat class that i have to link back and forth to from

2条回答
  •  情话喂你
    2020-12-13 09:16

    I am just providing another case where you can get this error message. The solution will be the same as Adam has mentioned above. This is from a real code and I renamed the class name.

    class FooReader {
      public:
         /** Constructor */
         FooReader() : d(new FooReaderPrivate(this)) { }  // will not compile here
         .......
      private:
         FooReaderPrivate* d;
    };
    
    ====== In a separate file =====
    class FooReaderPrivate {
      public:
         FooReaderPrivate(FooReader*) : parent(p) { }
      private:
         FooReader* parent;
    };
    

    The above will no pass the compiler and get error: invalid use of incomplete type FooReaderPrivate. You basically have to put the inline portion into the *.cpp implementation file. This is OK. What I am trying to say here is that you may have a design issue. Cross reference of two classes may be necessary some cases, but I would say it is better to avoid them at the start of the design. I would be wrong, but please comment then I will update my posting.

提交回复
热议问题