アジャイルライブラリを使用して既存のアプリケーションを拡張しようとしています。ライブラリは、アプリケーションにインターフェイスするために、具体的なインターフェイスクラスを作成するように強制しInterfaceToA
ます。ただし、私のアプリケーション内では、このオブジェクトをインスタンス化するための最も自然な場所(主要なリファクタリングなし)は、別のクラスのClassA
実装内です。ClassA
すべてのデータとメンバー関数にもアクセスできるようにするには、インターフェイスクラスが本当に必要です(継承元)。だから次のようなもの:
// Class declarations
class ClassA {
public:
double thing1;
double thing2;
f( double arg1, double arg2 );
ff()
};
class InterfaceToA : public ClassA {
public:
g( double arg1, double arg2 );
};
// Class implementations
double ClassA::f( double arg1, double arg2 ){
InterfaceToA interface;
return interface.g(arg1,arg2);
}
double ClassA::ff(){
return 1;
}
double InterfaceToA::g( double arg1, double arg2 ){
return (arg1 + thing1) - (arg2 + thing2) + ff();
}
//Main function
int main(){
ClassA myClassA;
myClassA.thing1 = 1;
myClassA.thing2 = 3;
double output;
output = myClassA.f(5,1);
std::cout << str(output) << std::endl;
return 0;
}
この場合、期待さoutput
れるのは3
、(5+1) - (1+3) + 1 = 3
です。これはC++で可能ですか?私は継承クラスとネストされたクラスの両方を使用してこれについて考えようとしてきましたが、どのように進めるかはかなり理解できます。