【发布时间】:2017-04-19 12:20:13
【问题描述】:
我收到一个未声明的标识符错误,我不知道为什么。我什至重写了完整的东西,以确保我没有打错字。谁能告诉我为什么会出现这个错误?
我的文件是
Connection.hpp
#pragma once
#include "../LogicSimulator.hpp"
#include "CircuitObject.hpp"
class Connection
{
public:
Connection(CircuitObject& c1, CircuitObject& c2, LogicSimulator&
simulator);
private:
int state;
CircuitObject& c1;
CircuitObject& c2;
LogicSimulator& simulator;
};
不要介意CircuitObjects,他们不会给出任何错误,错误是:未声明的'LogicSimulator'
Connection.cpp
#pragma once
#include "Connection.hpp"
#include "../LogicSimulator.hpp"
#include "CircuitObject.hpp"
Connection::Connection(CircuitObject& c1, CircuitObject& c2, LogicSimulator&
simulator) : c1(c1), c2(c2), simulator(simulator)
{
state = c1.State;
}
错误:未声明的“LogicSimulator”
LogicSimulator.hpp
#pragma once
#include "Simulator\CircuitObject.hpp"
#include "Simulator\Connection.hpp"
#include <SFML\Graphics.hpp>
#include <vector>
class LogicSimulator
{
public:
std::vector<CircuitObject*> circuitObjects;
std::vector<CircuitObject*> selectedCircuitObjects;
std::vector<Connection*> connections;
sf::RenderWindow Window;
void Init();
private:
void start();
void draw();
};
不要介意LogicSimulator.cpp,它不会给出任何错误。
错误:未声明的“连接”(是的,在连接逻辑模拟器中未声明)
【问题讨论】:
-
这条路径
#include "../LogicSimulator.hpp"正确吗? -
循环依赖 (
#includes) 不好。 -
查找“前向声明”。在开始定义之前,您有相互依赖的头文件被包含在内。
#pragma once(或包含守卫)解决了多重包含的问题,但不是(必然)定义相互依赖的问题。
标签: c++