は私がルール、外部クラス
ああ
#ifndef A_H
#define A_H
#include <vector>
class A
{
int n;
std::vector<A::B> elements;
public:
A();
A(int);
class B
{
int m;
A* a;
public:
B();
B(int);
B(int, A*);
};
};
#endif
ように定義されたクラスがあるとしA.cpp
私が定義する必要がありますどのように#include "A.h"
A::A()
: n(0)
{
}
A::A(int x)
: n(x), elements(std::vector<A::B>(n))
{
for (int j = 0; j < this->n; j++)
{
B newElement(j, this);
this->elements[j] = newElement;
}
}
A::B::B()
: m(0), a(0)
{
}
A::B::B(int j)
: m(j), a(0)
{
}
A::B::B(int j, A* aPtr)
: m(j), a(aPtr)
{
}
コピーコンストラクタ、オーバーロードされた代入演算子、デストラクタなど、削除時の無限再帰を避けるため、可能であれば、new
を使用する必要がありますか? A::B
は、プログラマが追加することを決定できる演算子を定義するためにA
へのポインタを必要とします。また、プログラマはクラスAを拡張Cと拡張C::D
を書くことを決めるかもしれA::B
ネストされたクラスを使用しないでください。 –
@ThomasMatthews私は教授が喜ばれるとは思わない。 – xinaiz
その場合、OPはStackOverflowではなく教授に尋ねるべきです。 :-) –