朋友功能无法访问私人会员

时间:2015-11-13 16:35:43

标签: c++ c++11 private friend

我试图获取class1ships的朋友功能来访问两者的私人成员,但它说这些成员无法访问。

代码如下,问题出在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 

1 个答案:

答案 0 :(得分:6)

只是让我的评论成为答案。您将substring声明为朋友功能。将您的正确原型char* checkpoints()声明为朋友。

您可能也想使用引用(可能是const),否则参数将通过值传递(复制):char* checkpoints(Ships ship, class1 game)