C++将一个对象分配给另一个类
C++ assigning an object to another class
我正在尝试创建一个指向类的指针,如下所示。
ASTNode* pAssign = new ASTAssignmentNode();
但是,pAssign
不包含类 ASTAssignmentNode
中定义的变量。我在这里错过了什么吗?如何访问 ASTAssignmentNode()
中定义的变量? ASTAssignmentNode()
继承自ASTStatementNode()
继承自ASTNode()
。
写入pAssign->variable
(在 ASTAssignmentNode())
中声明)时,发生错误"pAssign 不包含成员变量的定义"
我没有C++经验。
将不胜感激任何帮助。
你应该改用ASTAssignmentNode* pAssign 如果您正在为课堂作业执行此操作,并且他们为您提供了您不应该修改的文件,从而使您使用 ASTNode*,请询问您的助教,因为我遇到过这种情况,您应该可以使用解决方法,但它会因不同的作业而异。
尝试强制转换以访问属于 ASTAssignmentNode 类的变量
((ASTAssignmentNode* ) pAssign)->variable
我用的被称为常规石膏。您也可以使用静态投射或M.M.提到的动态投射,如果您想详细了解您需要哪种类型的投射,请在此处查看帖子。
只要您确定ASTAssignmentNode是ASTNode的子节点,就应该没有任何影响。
当你将ASTAssignmentNode投射到ASTNode时,它将只包含ASTNode的类定义,并且它对ASTAssignmentNode一无所知。这就是为什么你需要把它扔回去。
虚拟功能是一个例外。虚函数调用子类实现(如果存在)。
由于 pAssign 是指向基类的指针,因此需要将其强制转换为派生类 ASTAssignmentNode。最好使用 c++ dynamic_cast。
dynamic_cast<ASTAssignmentNode*>(pAssign)->variable
- C++ 如何在将新对象分配给另一个对象时创建新对象
- 我如何通过引用将 c++ 字符串分配给另一个字符串
- 如何在 c++ 中将小数点后两位数的浮点数分配给另一个浮点数
- 为什么我可以在不重载 "=" 运算符的情况下将一个对象分配给另一个对象?
- 将指针分配给另一个指针时会发生什么情况?
- 当分配一个字符串值并稍后通过分配另一个值进行更改时C++如何管理内存?
- C++将一个指针分配给另一个指针时执行的类型检查
- 关于字符数组,我正在尝试将数组中的每个字符分配给另一个值
- 使用动态分配将 char* 复制到另一个字符**
- 是否可以使用分配器对象来释放另一个分配器分配的内存?
- 如何在不知道对应关系的情况下在字符串中搜索字符并将其分配给另一个字符?
- 我重载了 << 和 = 运算符。为什么当我将一个对象分配给另一个对象并尝试打印它时,我会被打印出来?
- 为什么将两个对象分配给另一个对象后,两个对象不一样?
- 如果一个变量在它之前释放了另一个(相同的数据类型)变量,如何将其分配给内存?
- 将字符从一个字符串简单分配到另一个字符串不起作用
- 将 void 指针分配给另一个 void 指针
- 在 c++ 中,同一类的一个对象如何分配给同一类的另一个对象?
- 如何在C++中将类的实例完全重新分配给同一类的另一个实例(然后删除原始对象)?
- C++ - 无法将顶部常量指针分配给另一个非常量指针
- 在另一个分配的矩阵中为特定范围创建 cv::Mat 标头