두 개의 얽힌 문제가 조금 있습니다.다른 헤더에 선언 된 배열 객체를 가리키는 포인터를 반환하는 메서드
먼저 힙의 개체에 대한 포인터 배열을 갖고 싶습니다. (다른 헤더에 선언 된 객체)
둘째로, 메소드에서 해당 객체 중 하나에 대한 포인터를 반환해야합니다.
내 현재 코드는 약간의 실수로 인한 결과이며 "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
몇 오타 이외
foo의 소멸자에서 객체를 삭제하십시오 =) –