絡み合った 2 つの問題に少し行き詰まっています。
まず、ヒープ上のオブジェクトへのポインターの配列が必要です。(別のヘッダーで宣言されているオブジェクト)
2 つ目は、これらのオブジェクトの 1 つへのポインターを返すメソッドを作成することです。
私の現在のコードは、少し手探りした結果であり、完全に宣言しないと戻り値の型として "bar" を使用できないため、失敗します。しかし、他に問題を解決する方法がわかりません。"getBar" を関数へのポインターにしようとしましたが、メンバー メソッドでなくても **barArray にアクセスする方法がわかりません。
どんな助けでも大歓迎です:D
私のコード:
foo.h
#ifndef FOO_H
#define FOO_H
//forward declaration
class bar;
class foo
{
public:
//constructor
foo(int x);
//method
bar * getBar(int y);
private:
int howManyBars;
bar **barArray;
};
#endif
foo.cpp
#include "foo.h"
#include "bar.h"
//constructor
foo::foo(int x)
{
howManyBars = x;
barArray = new bar *[howManyBars];
for (int i=0; i < howManyBars ; i++)
{
barArray[i] = NULL; //set all pointers to NULL
}
}
//method
bar * foo::getBar(int y)
{
y = (y - 1);
// if the pointer is null, make an object and return that
if (barArray[y] == NULL)
{
barArray[y] = new bar();
}
return barArray[y];
}
bar.h
#ifndef BAR_H
#define BAR_H
#include <iostream>
class bar
{
public:
void test(){std::cout << "I'm alive!\n";};
};
#endif