我認爲我有循環依賴問題,不知道如何解決它...... 儘可能短: 我編碼的東西就像一個HTML解析器。 我有一個main.cpp文件和兩個頭文件Parser.h和Form.h. 這些頭文件容納整個定義...(我懶得做相應的.cpp文件...循環依賴...如何解決?
Form.h看起來是這樣的:
//... standard includes like iostream....
#ifndef Form_h_included
#define Form_h_included
#include "Parser.h"
class Form {
public:
void parse (stringstream& ss) {
// FIXME: the following like throws compilation error: 'Parser' : is not a class or namespace name
properties = Parser::parseTagAttributes(ss);
string tag = Parser::getNextTag(ss);
while (tag != "/form") {
continue;
}
ss.ignore(); // >
}
// ....
};
#endif
和Parser.h外觀像這樣:
// STL includes
#ifndef Parser_h_included
#define Parser_h_included
#include "Form.h"
using namespace std;
class Parser {
public:
void setHTML(string html) {
ss << html;
}
vector<Form> parse() {
vector<Form> forms;
string tag = Parser::getNextTag(this->ss);
while(tag != "") {
while (tag != "form") {
tag = Parser::getNextTag(this->ss);
}
Form f(this->ss);
forms.push_back(f);
}
}
// ...
};
#endif
不知道這是否是重要的,但我在做MS構建的Visual Studio 2010旗艦版和 它拋出我 「分析器」:不是類或命名空間名稱
如何解決這個問題? 謝謝!
解決方案:不要太懶惰;) – 2012-02-24 18:01:48
@ 500-InternalServerError::-)所以這意味着我必須分開定義和聲明?它會有幫助嗎? – Novellizator 2012-02-24 18:04:24
@Tomy:是的,沒有分離它幾乎是不可能的。 – 2012-02-24 18:07:00