これはおそらく味に関するものです。
このようなもの:
class A:public vector<int>{};
class B:public vector<A>{
};
class C{
public:
vector<B> cs;
};
今私が実装したいのA
は、 のオブジェクトを受け取る関数ですC
。このようなもの:
class A:vector<int>{
void foo( C &c);
};
C
ニーズB
とB
ニーズA
を完全に宣言する必要があるため、これは不可能です。次に、2 つのオプションが表示されます。
1) foo をそのようにします:void foo(void *c);
そして実装 (A.cpp 内) でキャストを行います。これの問題は、本当にいいことでもきれいなことでもなく、他の開発者を少し混乱させます。
2)私が取り組んでいる名前空間でオブジェクトを作成します。これは、SOLID の原則、特に単一責任の原則に違反しています。
たぶん、私には見えない、不便ではない第 3 の方法があります。より正確な用量の形式があるかどうか、誰でも教えてもらえますか?