gpt4 book ai didi

c++ - C++链表中私有(private)指针错误

转载 作者:行者123 更新时间:2023-11-28 03:07:55 24 4
gpt4 key购买 nike

我试图在 C++ 中实现链表,但每次编译时,我都会收到一条错误消息,提示 'Node* Node::nextPtr' is private。如果我将 nextPtr 更改为具有公共(public)保护,那么我不会收到错误并且我的列表很好。有人可以告诉我这是为什么以及如何解决吗?我的 listnode 类如下:

//list.h
#include <string>

#include "node.h"

using namespace std;

class List
{

public:
List();

bool isEmpty();
void insertAtFront(string Word);
void displayList();

private:
Node * firstPtr;
Node * lastPtr;

};


//node.h
#ifndef NODE_H
#define NODE_H

#include <string>

using namespace std;

class Node
{

public:
Node(string arg);

string getData();



private:
string data;
Node * nextPtr;


};


//node.cpp
#include <iostream>
#include <string>

#include "node.h"

using namespace std;

Node::Node(string arg)
:nextPtr(0)
{
cout << "Node constructor is called" << endl;
data = arg;

}

string Node::getData()
{
return data;
}


//list.cpp
#include <iostream>

#include "list.h"
#include "node.h"

using namespace std;

List::List()
:firstPtr(0), lastPtr(0)
{
}

bool List::isEmpty()
{
if(firstPtr == lastPtr)
return true;
else
return false;
}

void List::displayList()
{
Node * currPtr = firstPtr;

do
{

if(currPtr->nextPtr == lastPtr) // Error here
cout << endl << currPtr->getData() << endl;
cout << endl << currPtr->getData() << endl;

currPtr = currPtr->nextPtr; //Error here

}
while(currPtr != lastPtr);

}

void List::insertAtFront(string Word)
{

Node * newPtr = new Node(Word);

if(this->isEmpty() == true)
{
firstPtr = newPtr;
cout << "Adding first element...." << endl;
}
else if(this->isEmpty() == false)
{
newPtr->nextPtr = firstPtr; //Error here
firstPtr = newPtr;
cout << "Adding another element...." << endl;
}
}

最佳答案

您没有在 List 类中显示成员函数的定义,但我敢打赌这是因为那些成员函数试图从 Node 访问 nextPtr类(class)。你可以,

  1. Node 公开 nextPtr
  2. 将公共(public)访问器函数添加到 Node 以访问它
  3. 声明List为来自Node的友元,友元类List;

关于c++ - C++链表中私有(private)指针错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19235303/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com