C++ 中的朋友 class 不允许访问私有成员属性
Friend class in C++ not allowing access to private member attributes
我最近开始使用 C++,老实说,我的讲师帮不上什么忙,我正在尝试让链表好友访问节点 class。据我所知,我已经声明了我需要的一切,但我仍然无法访问 Node 私有成员,如果有人能看到我遗漏的东西,那就太好了!
我的节点头文件:
```#ifndef NodeofBook_h
#define NodeofBook_h
#include <stdio.h>
#include "Book.h"
class ListOfBooks;
//
class NodeofBook {
friend class ListOfBooks;
private:
NodeofBook* next;
Book* theBook;
public:
};
#endif /* NodeofBook_h */
我的链表头文件:
#ifndef ListOfBooks_h
#define ListOfBooks_h
#include <stdio.h>
#include "NodeofBook.h"
class ListOfBooks {
private:
public:
ListOfBooks();
void insertBack(int);
void displayList();
int deleteMostRecent();
int deleteInt(int pos);
};
#endif /* ListOfBooks_h */
我的链表cpp文件:
#include "ListOfBooks.h"
int ListOfBooks(){
return 0;
}
ListOfBooks::ListOfBooks(){
theBook->title = "noTitleYet";
theBook->isbn = 0000;
next = NULL;
}
我收到一条错误消息,指出 使用了未声明的标识符 'theBook'
非常感谢任何帮助!
NodeofBook
声明ListofBooks
是朋友class只是意味着ListofBooks
的实现可以访问NodeofBook
的私有成员,但是有仍然需要成为 NodeofBook
的实例才能访问。它的成员不是静态的;非静态成员变量是某些对象的一部分。也就是说,仅仅因为 ListofBooks
是 NodeofBook
的朋友并不意味着它神奇地拥有 NodeofBook
成员的实例。
朋友关系不像继承那样是一种关系:它只是关于访问。
我最近开始使用 C++,老实说,我的讲师帮不上什么忙,我正在尝试让链表好友访问节点 class。据我所知,我已经声明了我需要的一切,但我仍然无法访问 Node 私有成员,如果有人能看到我遗漏的东西,那就太好了!
我的节点头文件:
```#ifndef NodeofBook_h
#define NodeofBook_h
#include <stdio.h>
#include "Book.h"
class ListOfBooks;
//
class NodeofBook {
friend class ListOfBooks;
private:
NodeofBook* next;
Book* theBook;
public:
};
#endif /* NodeofBook_h */
我的链表头文件:
#ifndef ListOfBooks_h
#define ListOfBooks_h
#include <stdio.h>
#include "NodeofBook.h"
class ListOfBooks {
private:
public:
ListOfBooks();
void insertBack(int);
void displayList();
int deleteMostRecent();
int deleteInt(int pos);
};
#endif /* ListOfBooks_h */
我的链表cpp文件:
#include "ListOfBooks.h"
int ListOfBooks(){
return 0;
}
ListOfBooks::ListOfBooks(){
theBook->title = "noTitleYet";
theBook->isbn = 0000;
next = NULL;
}
我收到一条错误消息,指出 使用了未声明的标识符 'theBook'
非常感谢任何帮助!
NodeofBook
声明ListofBooks
是朋友class只是意味着ListofBooks
的实现可以访问NodeofBook
的私有成员,但是有仍然需要成为 NodeofBook
的实例才能访问。它的成员不是静态的;非静态成员变量是某些对象的一部分。也就是说,仅仅因为 ListofBooks
是 NodeofBook
的朋友并不意味着它神奇地拥有 NodeofBook
成员的实例。
朋友关系不像继承那样是一种关系:它只是关于访问。