大佬教程收集整理的这篇文章主要介绍了带有继承的前向声明并包含 |不完整的类型或预期的类名 有没有可能让它工作?,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
有人可以帮忙吗?
假设我有以下 C++ 文件:
#ifndef ROOM_H
#define ROOM_H
#include "Console.h"
...
class Room {
public:
voID room();
};
#endif // ROOM_H
#include "Room.h"
voID Room::room() {
Console::print();
}
#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
#include "Console.h"
voID Console::print() {
;
}
voID Console::printRoom(Room& room) {
// print member of room
}
voID Console::printRoomChild(RoomChild& roomChild) {
// print member of roomChild
}
#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
#include "RoomChild.h"
voID RoomChild::roomChild() {
Console::print();
}
我试图向每个类或仅向其中一些类提出声明。但是,它不起作用并给我 ... has incomplete type
或 expected 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,请注明来意。