首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >C++将对象分配给另一个类

问C++将对象分配给另一个类
EN

Stack Overflow用户
提问于 2016-04-27 06:42:11
回答 3查看 65关注 0票数 2

我正在尝试创建一个指向一个类的指针,如下所示。

代码语言:javascript
复制
ASTNode* pAssign = new ASTAssignmentNode();

但是,pAssign不包含类ASTAssignmentNode中定义的变量。我是不是错过了什么?如何访问ASTAssignmentNode()中定义的变量?ASTAssignmentNode()继承自ASTStatementNode(),而ASTNode()继承自ASTNode()。

当编写pAssign->variable (在ASTAssignmentNode())中声明)时,出现错误"pAssign不包含成员变量的定义“

我在C++方面没有经验。

都会很感谢你的帮助。

EN

回答 3

Stack Overflow用户

发布于 2016-04-27 06:47:51

您应该使用ASTAssignmentNode* pAssign。如果你这样做是为了一个类分配,他们给了你不应该修改的文件,让你使用ASTNode*,请咨询你的助教,因为我曾经遇到过这种情况,应该有一些你可以使用的变通办法,但不同的分配会有所不同。

票数 1
EN

Stack Overflow用户

发布于 2016-04-27 06:53:40

尝试强制转换以访问属于ASTAssignmentNode类的变量

代码语言:javascript
复制
((ASTAssignmentNode* ) pAssign)->variable

我所使用的被称为常规造型。你也可以使用M.M.提到的静态转换或动态转换。如果你想详细了解你需要哪种类型的转换,请查看post here。

只要您确定ASTAssignmentNode是ASTNode的孩子,就不应该有任何影响。

当您将ASTAssignmentNode转换为ASTNode时,它将只包含ASTNode的类定义,而对ASTAssignmentNode一无所知。这就是为什么你需要回溯它的原因。

虚拟函数是一个例外。虚函数调用子类实现(如果它们存在)。

票数 1
EN

Stack Overflow用户

发布于 2016-04-27 07:12:10

由于pAssign是指向基类的指针,因此需要将其强制转换为派生类ASTAssignmentNode。优选地具有c++ dynamic_cast。

代码语言:javascript
复制
dynamic_cast<ASTAssignmentNode*>(pAssign)->variable
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/36877098

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档