次のエラーが表示されます。すべてのクラスで 'class name' does not name a type
です。 私はそれが循環依存であるかもしれないと思うが、各クラスが次の関数からのアクセスを必要とするので、どのようにそれを解決するかという手がかりはない。以下は、私のクラスは次のとおりです。"タイプに名前を付けない"エラーを解決する方法
Container.h:
#ifndef CONTAINER_H
#define CONTAINER_H
#include "Factory.h"
class Container
{
public:
Container()
{
array = new int[10];
for (int i = 0; i < 10; ++i) {
array[i] = i;
}
}
Iterator* createIterator()
{
Factory fac;
return fac.factoryMethod();
}
friend class Iterator;
private:
int* array;
};
#endif //CONTAINER_H
Factory.h:
#ifndef FACTORY_H
#define FACTORY_H
#include "Iterator.h";
class Factory
{
Iterator* factoryMethod(Container* con)
{
return new Iterator(con);
}
};
#endif //FACTORY_H
Iterator.h:
#ifndef ITERATOR_H
#define ITERATOR_H
#include "Container.h"
class Iterator
{
public:
Iterator(Container* con)
{
this->con =con;
}
int getFromIndex(int i)
{
return con->array[i];
}
private:
Container* con;
};
#endif //ITERATOR_H
main.cppに:
#include <iostream>
using namespace std;
#include "Container.h"
#include "Iterator.h"
int main() {
Container con;
Iterator* it = con.createIterator();
cout<<it->getFromIndex(2)<<endl;
return 0;
}
ご協力いただきありがとうございます。
.cppファイルに関数本体を配置します。 – Dan
@ダンこれを試してみましたが、デモンストレーション目的でインラインで置いてください。 – Keagansed