gpt4 book ai didi

c++ - 双向链表节点的下一个是私有(private)的

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

我正在实现一个双向链表,并使用我自己的对象作为存储的数据。

这是我的对象:

#ifndef PLAY_H_INCLUDED
#define PLAY_H_INCLUDED
#include <string>

class Play
{
private:
int m_quarter;
int m_minutes;
std::string oTeam;
std::string dTeam;
int m_down;
int m_yardToGO;
int m_startLoc;
int playDesc;
std::string wholePlay;
int relevance;
int relCounter;
public:
int getQuarter();
int getMinutes();
std::string getoTeam();
std::string getdTeam();
int getDown();
int getYard();
int getStartLoc();
int getPlayDesc();
std::string getwholePlay();
Play(int quarter, int minutes, std::string offense, std::string defense, int dwn, int ytg, int start, int desc, std::string play, int relevance, int relCounter);
~Play();
Play parse(std::string toParse);
std::string findPlay(std::string playDesc);
};

#endif // PLAY_H_INCLUDED

-

这是我的节点:

template<class T>
class node{
friend class Play;
T data;
node *next, *prev;
node(const T& t, node *n = 0, node *p = 0) {data=t; next=n; prev=p;}
};

我得到的确切错误是:

error: node<Play>* node<Play>::next is private.

我假设我遇到这个问题是因为 Play 的信息是私有(private)的并且节点无法访问,为了解决这个问题,我尝试让节点成为 Play 的友元类。当我这样做时,我收到错误提示“node is not a template type”。该错误对我来说毫无意义,因此我认为这不是解决问题的方法。

谢谢。

最佳答案

使用 public: 以上属性应该是公开的。如果您不指定任何内容,所有内容都会变为私有(private)。

template<class T>
class node{
public: // ADD THIS
friend class Play;
T data;
node<T> *next, *prev;
node(const T& t, node<T> *n = 0, node<T> *p = 0) { // EDIT

data=t; next=n; prev=p;
}
};

编辑:在使用模板类时,你总是需要使用 <>,就像我在上面编辑的那样。

关于c++ - 双向链表节点的下一个是私有(private)的,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19399451/

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