依赖类的C++继承和实例化
C++ inheritance and instantiation of depended classes
我正在尝试使用敏捷库来扩展现有的应用程序。该库迫使我创建一个具体的接口类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++中可能吗?我一直在尝试使用继承类和嵌套类来考虑这一点,但我很清楚如何进行。
我想明白了。我需要将对ClassA
的引用传递给InterfaceToA::g
。最终可编译代码低于
#include<iostream>
// Class declarations
class ClassA {
public:
double thing1;
double thing2;
double f( double arg1, double arg2 );
double ff();
};
class InterfaceToA : public ClassA {
public:
double g( ClassA &myClass, double arg1, double arg2 );
};
// Class implementations
double ClassA::f( double arg1, double arg2 ){
InterfaceToA interface;
return interface.g(*this,arg1,arg2);
}
double ClassA::ff(){
return 1;
}
double InterfaceToA::g( ClassA & myClass, double arg1, double arg2 ){
return (arg1 + myClass.thing1) - (arg2 + myClass.thing2) + myClass.ff();
}
//Main function
int main(){
ClassA myClassA;
myClassA.thing1 = 1;
myClassA.thing2 = 3;
double output;
output = myClassA.f(5,1);
std::cout << output << std::endl;
return 0;
}
相关文章:
- 您能否实例化模板的非专用版本并在专用化中继承它?
- 在编译时检查未实例化的类模板是否继承自其第一个模板参数
- C++ 实例化新对象时不接受继承方法默认参数值
- 如何实例化从使用模板的纯虚拟类继承的对象
- 获取继承的实例化模板的类型
- 无法使用多重继承 c++ 实例化抽象类
- 模板类实例化如何与类继承协同工作
- Cython C 类继承无法实例化派生类
- 实例化指针从继承类函数
- 为什么不能将继承自(非模板)类 B 的实例化类模板 A 的引用转换为对 B 的引用?
- 如何在不使用继承的情况下'rename'模板实例化?
- 实例化没有继承的对象时出错
- 依赖类的C++继承和实例化
- 继承错误 - 无法实例化抽象类 无法访问在类中声明的受保护成员
- 正确实例化双重继承对象
- 将抽象类继承与实例化模板混合
- 额外的继承对对象结构或实例化有影响吗?
- Qt继承和实例化问题
- c++中多态性基类和继承类实例化的问题
- 在实例化继承类时无法实例化抽象类