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