- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个严格用于定义、全局数据、typedef 等的文件...
游戏数据.h
#include <utility>
#include "player.h"
namespace GameData {
enum Color {
BLACK = 0,
WHITE = 1
};
typedef typename std::pair<char, int> Position;
typedef typename std::pair< std::pair<char, int>, std::pair<char, int> > Move;
typedef typename std::pair<Player*, Player*> Players;
};
我有两个问题:
(1) 未找到播放器类 - 尽管我已将其包含在 header 中
#include <string>
#include "board.h"
#include "gamedata.h"
class Player {
public:
virtual ~Player() {}
virtual Move getMove(Board &c) = 0;
};
(2)播放器头部的Move getMove
函数无法解析Move
`Move` does not name a type
我最好的猜测是发生这种情况是因为它是一个循环包含,两者都需要相互包含。
所以我在 gamedata.h 中转发声明 Player
class Player;
namespace GameData {
enum Color {
BLACK = 0,
WHITE = 1
};
typedef typename std::pair<char, int> Position;
typedef typename std::pair< std::pair<char, int>, std::pair<char, int> > Move;
typedef typename std::pair<Player*, Player*> Players;
};
这解决了播放器问题,但现在移动仍然不稳定。
// None work
GameData::Move
Move
代码:
编辑 1
我想改变这个:
typedef typename std::pair< std::pair<char, int>, std::pair<char, int> > Move;
到
typedef typename std::pair<Position, Position> Move;
但我认为它产生了错误,所以我还没有将其还原。
最佳答案
好吧我在搜索 50 次后找到了答案哈哈。当我说我尝试转发声明 class Player
时,我没有删除问题所在的 #include "player.h"
。
引自 Peter 87:
You have a circular dependency. janitor.h includes lunch.h. lunch.h includes janitor.h, but the header guard prevents janitor.h from being included and lunch.h fails because it depends on what is in janitor.h.
To prevent this problem you can use forward declaration.
Instead of #include "janitor.h" you write class janitor; This will work as long as all you have is pointers or reference to janitor objects. If you use the object you will need to include the header so in the source files you will probably have to include them. Do the same with all your other headers, not just janitor.h. A good rule is to use forward declarations if it's enough and only include if you have to.
关于 header 命名空间中的 C++ typedef 包含项找不到类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21164882/
例如,我有一个父类Author: class Author { String name static hasMany = [ fiction: Book,
代码如下: dojo.query(subNav.navClass).forEach(function(node, index, arr){ if(dojo.style(node, 'd
我有一个带有 Id 和姓名的学生表和一个带有 Id 和 friend Id 的 Friends 表。我想加入这两个表并找到学生的 friend 。 例如,Ashley 的 friend 是 Saman
我通过互联网浏览,但仍未找到问题的答案。应该很容易: class Parent { String name Child child } 当我有一个 child 对象时,如何获得它的 paren
我正在尝试创建一个以 Firebase 作为我的后端的社交应用。现在我正面临如何(在哪里?)找到 friend 功能的问题。 我有每个用户的邮件地址。 我可以访问用户的电话也预订。 在传统的后端中,我
我主要想澄清以下几点: 1。有人告诉我,在 iOS 5 及以下版本中,如果您使用 Game Center 设置多人游戏,则“查找 Facebook 好友”(如与好友争夺战)的功能不是内置的,因此您需要
关于redis docker镜像ENTRYPOINT脚本 docker-entrypoint.sh : #!/bin/sh set -e # first arg is `-f` or `--some-
我是一名优秀的程序员,十分优秀!