テンプレートとコンポジションスタイルのコーディングに少し問題があります。*thisパラメーターを使用して別のコンストラクター内に作成されているオブジェクトがあります。不明な点がある場合は申し訳ありません。コードは次のとおりです。
external.hファイル内:
class outer {
public:
outer(int w, int l);
int getWidth();
int getLength();
private:
inner<outer> test(*this);
int width;
int length;
};
outer::outer(int w, int l) {
width = w;
length = l;
}
int outer::getLength() {
return length;
}
inner.hファイル内
template<typename T>
class inner {
public:
inner(T &name);
private:
int top;
int bot;
};
template<typename T>
inner<T>::inner(T &name) {
top = name.getLength() /2;
bot = -name.getLength() / 2;
}
これに対処するものがオンラインで見つからないため、これが許可されているかどうかはわかりません。コンパイラーは、outer.hの*thisステートメントに問題があります。
よろしくお願いします。