【问题标题】:How do I convert "struct Node" into "class Node"?如何将“结构节点”转换为“类节点”?
【发布时间】:2020-07-17 02:51:21
【问题描述】:

例如,我有

struct Node
{
    string firstName;
    string middleI;
    string lastName;
    string phoneNum;
    Node *next;
};

我想更改它,而不是使用“struct Node”,而是将其更改为“class Node”。我觉得到目前为止我所拥有的并不正确,即:

class Node
{
private:
  string firstName;
  string middleI;
  string lastName;
  string phoneNum;

  Node *next;

public:
  Node(string f, string mi, string sur, string ph){
        firstName = f;
        middleI = mi;
        lastName = sur;
        phoneNum = ph;
        next = NULL;
  }
};

如果我从结构节点更改为类节点,会影响我的链表函数吗? (我的链表函数是打印出链表并读入数据。)

【问题讨论】:

  • 你的班级还没有你的数据的访问器。
  • 这能回答你的问题吗? When should you use a class vs a struct in C++?
  • 除非你的任务是实现一个链表,那么我的建议是将它重命名为更合适的名称,描述它的用途(类或结构名称通常是名词),然后使用其中一个standard containers(通常是std::vector)。
  • @RetiredNinja 我之前使用的是 struct,但我的教授说他希望我们使用 class,所以我并没有真正选择应该使用 class 还是 struct
  • @Someprogrammerdude 我的任务是实现一个链表。我需要从文件中读取联系人,将其放入列表中,清除重复项,然后输出列表。

标签: c++ class struct linked-list nodes


【解决方案1】:

我想改变它,而不是“结构节点”,我把它改为“类节点”

structclass 关键字之间的唯一区别是正在定义的类的默认访问说明符。因此,如果您的唯一目标是更改用于定义类的关键字,那么您只需指定访问说明符以匹配原始 struct 定义:

class Node
{
public:  // notice this
    string firstName;
    string middleI;
    string lastName;
    string phoneNum;
    Node *next;
};

如果我从结构节点更改为类节点,会影响我的链表函数吗?

如果定义保持等价,就像在我的示例中一样,则不会受到任何影响,因为它在语义上是等价的。

如果您在尝试中将成员的访问权限更改为私有,那么使用这些成员名称的任何非成员函数都将变得格式错误。如果您的目标是使您的数据成员私有化,那么您需要使用成员函数来访问它们。

【讨论】:

  • 非常感谢。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2020-09-14
  • 2021-11-18
  • 1970-01-01
  • 1970-01-01
  • 2015-05-14
  • 2014-11-04
  • 1970-01-01
相关资源
最近更新 更多