【发布时间】:2017-10-21 07:12:10
【问题描述】:
此代码抛出错误:
class A {};
class B : public A {};
int main() {
A instance = new B();
}
错误信息:
void *operator new(unsigned int)
no suitable constructor exists to convert from "B *" to "A"
我的第一语言是 Java,我对此感到非常困惑。每个子类都可以被视为它的母类,因为它派生了所有东西,那么他们为什么不添加将 B 视为 A 的选项呢?
还是我的语法有错误?我之前就开始学C++ 3的弱点,应该可以的。
我无法通过谷歌或通过搜索我的教程找到解决方案,所以请帮助我。
【问题讨论】:
-
你需要看一本教科书,不像java中的C++指针和变量不是一回事。问题不在于继承,而是
A和A*是不同的类型。 -
仔细查看错误消息,并阅读指针。
new导致B*与B不同。同样,A与A*不同。 -
A instance = new A();工作了吗?那个没有继承。 -
@Timon 从 Java 切换到 C++ 时,您应该忘记的第一件事是使用
new。这应该是最稀有的运算符之一。 -
Java 作为第一语言糟糕的另一个原因。
标签: c++ oop inheritance syntax initialization