C++ C++;将对象分配给另一个类
我试图创建一个指向类的指针,如下所示C++ C++;将对象分配给另一个类,c++,inheritance,C++,Inheritance,我试图创建一个指向类的指针,如下所示 ASTNode* pAssign = new ASTAssignmentNode(); 但是,pAssign不包含类asAssignmentNode中定义的变量。我是不是错过了什么?如何访问asAssignmentNode()中定义的变量ASTAssignmentNode()继承自ASTStatementNode(),后者继承自ASTNode() 写入pAssign->variable(在asAssignmentNode()中声明)时出现错误“pAssig
ASTNode* pAssign = new ASTAssignmentNode();
但是,pAssign
不包含类asAssignmentNode
中定义的变量。我是不是错过了什么?如何访问asAssignmentNode()
中定义的变量ASTAssignmentNode()
继承自ASTStatementNode()
,后者继承自ASTNode()
写入pAssign->variable
(在asAssignmentNode()中声明)
时出现错误“pAssign不包含成员变量的定义”
我在C++方面没有经验。p>
非常感谢您的帮助。您应该改用AssignmentNode*pAssign。如果你是为了一个类赋值而这样做的,而他们给了你一些你不应该修改的文件,让你利用ASTNode*,询问您的助教,因为我遇到过这种情况,您应该可以使用一些变通方法,但不同的作业会有所不同。尝试强制转换以访问属于AsAssignmentNode类的变量
((ASTAssignmentNode* ) pAssign)->variable
我所用的是所谓的常规演员阵容。您也可以使用M.M.提到的静态强制转换或动态强制转换。如果您想详细了解您需要哪种类型的强制转换,请查看
只要确定ASTAssignmentNode是ASTNode的子级,就不会有任何影响
当您将ASTAssignmentNode强制转换为ASTNode时,它将只包含ASTNode的类定义,而对ASTAssignmentNode一无所知。这就是为什么你需要把它扔回去
虚拟函数是一个例外。虚拟函数调用子类实现(如果存在)。由于pAssign是指向基类的指针,因此需要将其强制转换为派生类AsAssignmentNode。最好用C++动态映射.
dynamic_cast<ASTAssignmentNode*>(pAssign)->variable
dynamic\u cast(pAssign)->变量
将其分配给指向ASTAssignmentNode
的指针。如果您想使用ASTAssignmentNode
,那么为什么会有指向基类的指针?感谢您完全理解我的情况。我会进行相应的检查。这起作用了。请您解释一下,如果我使用它,是否会有影响?这应该是dynamic\u cast
或static\u cast
(最好是前者,除非您真的知道自己在做什么)编辑后包含简短的解释谢谢,这很有帮助!)如果您向某人引入动态_cast,请指出它可能返回null