抱歉提前启动另一个循环依赖线程,但我尝试了几乎所有东西,也许一双新眼睛可以提供帮助。 我怎么得到这个*编译?
CARD.H
#ifndef CARD_H
#define CARD_H
#include <string>
#include <sstream>
#include <irrKlang.h>
#include "Database.h"
using namespace std;
using namespace irrklang;
class Card: public Database{ // problem expected class-name before '{' token
public:
DATABASE.H
#ifndef __DATABASE_H__
#define __DATABASE_H__
#include <string>
#include <vector>
#include <sqlite3.h>
#include <wx/string.h>
#include <irrKlang.h>
#include <wx/file.h>
#include "Card.h" // even though i include card.h
using namespace std;
using namespace irrklang;
class Card; // if i take this out, I get: 'Card' was not declared in this scope|
class Database
{
public:
vector<Card> queryC(wstring query);
答案 0 :(得分:0)
有助于防止循环依赖的两条规则: 1.)如果您不需要实现类,只能通过前向引用声明它。 2.)如果您需要实现,请尽可能晚地包含头文件。
Card.h
#ifndef CARD_H
#define CARD_H
#include "Database.h"
class Card : public Database {
public:
int card;
};
#endif // #ifndef CARD_H
Database.h
#ifndef DATABASE_H
#define DATABASE_H
#include <vector>
#include <string>
class Card;
class Database {
public:
std::vector<Card> queryC(std::string query);
};
#endif // #ifndef DATABASE_H
Card.cpp
#include "Card.h"
Card card;
Database.cpp
#include "Database.h"
Database database;
$ g++ -c Card.cpp -o Card.o
$ g++ -c Database.cpp -o Database.o
$ ls -l Card.o Database.o
-rw-r--r-- 1 user group 959 19. Sep 09:13 Card.o
-rw-r--r-- 1 user group 967 19. Sep 09:13 Database.o