【问题标题】:C++ - How to access member variables/functions from a pointer to a classC++ - 如何从指向类的指针访问成员变量/函数
【发布时间】:2013-03-06 04:32:13
【问题描述】:

我的老师为链表上的作业设置了一些框架代码。

在标题中,定义了两个类: string_nodestring

在字符串定义中,有一个私有变量mutable string_node* cursor;

现在在实际实现中,我尝试使用游标作为对我创建并要修改的节点的引用。即:

for (cursor_index = 0; cursor_index < many_nodes; cursor_index++){
        cursor = new string_node(str[cursor_index]);

我不确定这是否正确,所以首先,如果这是错误的,谁能告诉我应该怎么做?

我认为它是错误的,因为我无法访问节点的数据并通过光标链接到其他节点,因为它是一个指针(我希望能够只做 cursor.data 甚至设置 get 和 set 方法,尽管我'不知道为什么我需要,如果有人想向我解释)。

所以主要问题是能够在实现中设置节点的数据/链接。

【问题讨论】:

  • 你真的需要和你的老师谈谈链表的问题。这篇文章要解释的太多了。
  • 如果这是一个选项,我不会在这里:P
  • 你有数据结构的教科书吗?
  • 在我发布答案之前,我需要你在 StackOverflow 或网络上搜索“C 链表”。
  • 是的,但我正在努力寻找答案。我能够以另一种方式设置链表(我已经在 J​​ava 中完成了所有这些以及更多工作,对 C++ 非常缺乏经验),但我对这个框架代码的设置方式感到困惑。

标签: c++ pointers


【解决方案1】:

有两种方法可以从指针中获取内容。

首先是取消引用:

string_node &mynode = *cursor;
mynode.whatever;

第二种(更好的方法)是使用解引用运算符(它的作用相同,但更优雅):

cursor->whatever;

继续你的方法:也许我对相关问题的回答会对你有所帮助:How to point an array inside a dynamic array to something?

您还可以从维基百科的伪代码中获得一些帮助:http://en.wikipedia.org/wiki/Linked_list#Linked_list_operations

【讨论】:

  • 谢谢。我不得不使用 *cursor-> 但除此之外一切都很好。
  • *光标->随便什么;意味着别的东西:从光标中获取“任何东西”,然后取消引用结果。你应该小心;听起来你对你正在尝试做的事情的结构感到困惑。
  • 好吧,它给了我一个光标错误-> 所以我放了 asterix,但现在它让我把它改回来。好奇。
  • 我认为没有更多背景信息,任何人都无法进一步帮助您。您应该使用更多代码更新您的问题,例如您的结构是什么样的以及您实际尝试做什么。
  • 感谢戴夫的提示,我肯定是个新手。
【解决方案2】:

回答您最初的问题:您需要“->”运算符。它相当于“。”指向对象的指针的运算符。

【讨论】:

    猜你喜欢
    • 2013-10-13
    • 1970-01-01
    • 1970-01-01
    • 2013-06-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-07-28
    • 2018-03-24
    相关资源
    最近更新 更多