Coordinates.h
namespace Coordinates
{
class Coordinates
{
public:
Coordinates(int x = 0, int y = 0) : x(x), y(y) {}
private:
int x;
int y;
};
}
Tile.h
#include "Coordinates.h"
#include <vector>
namespace Tile
{
using namespace Coordinates;
class Tile
{
private:
std::vector <Coordinates> coordTile;
};
}
在第二个标头Tile.h上,它在std::vector <Coordinates> coordTile;
上说Tile::Coordinates
是不明确的。没有命名空间,程序不会给出任何错误。
答案 0 :(得分:2)
您有一个命名空间Coordinates
和一个类Coordinates
,并且由于使用了using namespace
,所以两个名称都在范围内。尽管向量元素类型不能是名称空间,但这在编译的特定阶段仍然是模棱两可的。
您的类Coordinates
根本不需要位于命名空间Coordinates
中。好的建议是将所有代码放入一个命名空间中,以“屏蔽”他人的代码-您可能希望将代码进一步组织到多个命名空间中,但是将每个类放在自己的命名空间中毫无益处,当然您不应该像这样重复使用他们的名字。