程序问答   发布时间:2022-06-01  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了带有继承的前向声明并包含 |不完整的类型或预期的类名 有没有可能让它工作?大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

如何解决带有继承的前向声明并包含 |不完整的类型或预期的类名 有没有可能让它工作??

开发过程中遇到带有继承的前向声明并包含 |不完整的类型或预期的类名 有没有可能让它工作?的问题如何解决?下面主要结合日常开发的经验,给出你关于带有继承的前向声明并包含 |不完整的类型或预期的类名 有没有可能让它工作?的解决方法建议,希望对你解决带有继承的前向声明并包含 |不完整的类型或预期的类名 有没有可能让它工作?有所启发或帮助;

有人可以帮忙吗?

假设我有以下 C++ 文件:

房间.h

#ifndef ROOM_H
#define ROOM_H

#include "Console.h"

...

class Room {
public:
   voID room();
};

#endif // ROOM_H

Room.cpp

#include "Room.h"

voID Room::room() {
  Console::print();
}

控制台.h

#ifndef CONSolE_H
#define CONSolE_H

#include "Room.h"
#include "RoomChild.h"

class Console {
public:
   static voID print();
   static voID printRoom(Room& room);
   static voID printRoomChild(RoomChild& room);
};

#endif // CONSolE_H

控制台.cpp

#include "Console.h"

voID Console::print() {
    ;
}

voID Console::printRoom(Room& room) { 
    // print member of room 
}

voID Console::printRoomChild(RoomChild& roomChild) { 
    // print member of roomChild 
}

RoomChild.h

#ifndef ROOM_CHILD_H
#define ROOM_CHILD_H

#include "Room.h"
#include "Console.h"

class RoomChild : public Room {
public:
    voID roomChild();
};

#endif // ROOM_CHILD_H

RoomChild.cpp

#include "RoomChild.h"

voID RoomChild::roomChild() {
    Console::print();
}

我的问题是

有没有可能让它工作?

我试图向每个类或仅向其中一些类提出声明。但是,它不起作用并给我 ... has incomplete typeexpected class-name before '{' token class RoomChild: public Room {

解决方法

包含的内容都被搞砸了。

从不相关的文件中删除多余的包含指令。

在依赖它们的文件上添加包含指令。

房间.h

#ifndef ROOM_H
#define ROOM_H

/* deletE: because Room.h does not depend on it.
#include "Console.h"
*/

// ...

class Room {
public:
   void room();
};

#endif // ROOM_H

Room.cpp

#include "Room.h"

/* ADD: because Room.cpp does depend on it. */
#include "Console.h"

void Room::room() {
  Console::print();
}

Console.h

#ifndef CONSOLE_H
#define CONSOLE_H

/* deletE: because Console.h does not depend on them.
#include "Room.h"
#include "RoomChild.h"
*/

class Console {
public:
   static void print();
};

#endif // CONSOLE_H

控制台.cpp

#include "Console.h"

void Console::print() {
    ;
}

RoomChild.h

#ifndef ROOM_CHILD_H
#define ROOM_CHILD_H

#include "Room.h"
/* deletE: because RoomChild.h does not depend on it
#include "Console.h"
*/

class RoomChild : public Room {
public:
    void roomChild();
};

#endif // ROOM_CHILD_H

RoomChild.cpp

#include "RoomChild.h"
/* ADD: because RoomChild.cpp does depend on it. */
#include "Console.h"

void RoomChild::roomChild() {
    Console::print();
}

大佬总结

以上是大佬教程为你收集整理的带有继承的前向声明并包含 |不完整的类型或预期的类名 有没有可能让它工作?全部内容,希望文章能够帮你解决带有继承的前向声明并包含 |不完整的类型或预期的类名 有没有可能让它工作?所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。
标签: