0
后宣布我的头文件使用在基类派生类,而派生类的基类
#ifndef CATEGORY_H
#define CATEGORY_H
#include <functional>
#include <string>
#include <vector>
class Category
{
private:
std::string nameCategory;
std::vector<Rule> setOfRules;
protected:
public:
Category();
Category(std::string nameCategory);
void setIndexBankAccountEntry(unsigned int iBankAccountEntry);
};
class Rule : public Category
{
private:
std::function<void(int)> rule;
protected:
public:
Rule();
Rule(std::function<void(int)> rule);
};
#endif
在该命令std::vector<Rule> setOfRules;
给出Rule
尚未宣布的错误。
切换两个类的声明的顺序给出
#ifndef CATEGORY_H
#define CATEGORY_H
#include <functional>
#include <string>
#include <vector>
class Rule : public Category
{
private:
std::function<void(int)> rule;
protected:
public:
Rule();
Rule(std::function<void(int)> rule);
};
class Category
{
private:
std::string nameCategory;
std::vector<Rule> setOfRules;
protected:
public:
Category();
Category(std::string nameCategory);
void setIndexBankAccountEntry(unsigned int iBankAccountEntry);
};
#endif
但后来我得到的错误expected class-name before ‘{’ token
为线class Rule : public Category
。
我该如何解决这个问题?
为什么'Rule'已经从'Category'继承?它的'Category's包含Rule并不意味着Rule的接缝需要是派生类。 – NathanOliver
请参阅下面的答案。前瞻性声明所说的是“将会有一个类叫做这个类,但现在不用担心它是什么。”这允许你声明指向它的指针,但这是关于所有的 - 你不能在类中引用任何东西,直到它被正确声明为止。 – Mike