我试图获取class1
和ships
的朋友功能来访问两者的私人成员,但它说这些成员无法访问。
代码如下,问题出在ships.cpp
。我试图在一个文件中以更简单的方式重现这个问题,但它并没有发生在那里,所以我不知道这里有什么问题。也许它是一个循环声明问题?
ships.h
#ifndef _SHIPS_H_
#define _SHIPS_H_
#include "point.h"
class class1;
class Ships{
public:
friend char* checkpoints();
private:
Point ship[6];
};
#endif // ! _SHIPS_H_
ships.cpp
#include "ships.h"
#include "class1.h"
char* checkpoints(Ships ship, class1 game) {
ship.ship[0];//cannot access private member declared in class 'Ships'
game.smallship;//cannot access private member declared in class 'class1'
return nullptr;
}
class1.h
#ifndef _CLASS1_H_
#define _CLASS1_H_
#include "ships.h"
class class1 {
public:
friend char* checkpoints();
private:
static const int LIVES = 3;
Ships smallship, bigship;
};
#endif
答案 0 :(得分:6)
只是让我的评论成为答案。您将substring
声明为朋友功能。将您的正确原型char* checkpoints()
声明为朋友。
您可能也想使用引用(可能是const),否则参数将通过值传递(复制):char* checkpoints(Ships ship, class1 game)