C++从另一个类中用作类型的类继承
C++ inherit from class that is used in another class as a type
我有以下(简化的)C++代码。
class A
{
};
class B
{
public:
A addSomething(int something)
{
this->something = something;
}
private:
int something;
};
class C : public A
{
};
void main()
{
B variableB = B();
A variableA;
variableA = variableB.addSomething(123);
C variableC;
variableC = variableB.addSomething(456);
}
我有三个班级:A
,B
和C
。 B
被视为主类或主类,而C
和A
在我的上下文中表示子类。类 B
有一个公共方法,其类型必须A
,并向其私有属性添加一个整数值。类 C
扩展类A
。
在 main 函数中,master 类被实例化,它的实例用于添加整数值,这工作得很好。但是,对从类 A
派生的实例执行相同的操作不起作用。它返回一个错误,指出:
没有运算符 "=" 与这些操作数匹配
我知道这是由于在大师类中addSomething
函数具有类A
的类型引起的,但我也需要它与它的子类一起工作。有没有办法在不更改类B
的情况下使其工作?
你的目标是给一个C
-type-value 一个A
-type-value,这与类B
的业务无关。你需要做的是为类C
编写一个构造函数,并将值交给variableC
。
因此,请为 C 类添加代码:
class C : public A
{
public:
C() {}
C(A a){}
};
编译器不知道如何将A
的实例分配给类型为 C
的变量。
如果你不能改变类B
,你可以在类C
中实现operator=
:
class C : public A
{
public:
C& operator=(const A& a)
{
// assign A to C
return *this;
}
};
相关文章:
- 继承模板类中的类型别名
- 在运行时检查继承是否只有一种类型和 void*
- C++从外部类继承的嵌套类;不允许使用不完整的类型
- 可以从std::string继承以提供类型一致性吗
- 事件系统:使用类型转换或联合进行继承
- 继承类中的 C++ 成员变量类型重写
- C :可以从类及其受保护的成员类型继承可以继承吗?
- 模板类上的类型继承
- C 类从类型继承
- 在 C++11 中,从私有嵌套类型继承是否合法?
- 模板基类型继承
- C#中从指定类型继承的模板类的等效项是什么
- 为boost mpl列表中的每种类型继承容器
- 从基类和返回类型继承模板
- 从基元类型继承的枚举
- 使用类型继承的数字组的层次结构
- 在任何/某些C++编译器中是否有允许从本机(基本)类型继承的选项
- 创建从不同对象提供的类型继承的类的对象
- c++用这个类作为类型继承类模板
- 我如何从mpl::vector中的所有类型继承