【发布时间】:2011-12-13 17:22:19
【问题描述】:
我有以下代码:
大师.h
#ifndef MASTER_H
#define MASTER_H
class Master
{
friend class Friend;
public:
Master(void);
~Master(void);
void CallFriendFunction(int largeData);
private:
int largeData;
//Want this class to share largeData;
Friend testFriend;
};
#endif // MASTER_H
Master.cpp
#include "Master.h"
Master::Master(void)
{
//Inentionally left blank
}
Master::~Master(void)
{
//Intentionally left blank
}
void Master::CallFriendFunction(int largeData)
{
this->largeData = largeData;
this->testFriend.Test(this);
}
朋友.h
#ifndef FRIEND_H
#define FRIEND_H
#include "Master.h"
class Friend
{
public:
Friend(void);
~Friend(void);
void Test(Master* masterPtr);
};
#endif // FRIEND_H
朋友.cpp
#include "Friend.h"
#include <iostream>
Friend::Friend(void)
{
//Intentionally left blank
}
Friend::~Friend(void)
{
//Intentionally left blank
}
void Friend::Test(Master* masterPtr)
{
std::cout << masterPtr->largeData << std::endl;
}
我希望班级朋友能够分享大师的私人成员。但是,我无法编译此代码。我已经尝试过前向声明和#includes,但我开始陷入循环依赖。当Friend类不是Master类的成员时,代码是否编译?
Friend类是否可以成为Master的成员并成为朋友? Friend 类还能如何访问 Masters 私人成员?
【问题讨论】:
-
什么是编译器错误。 (C&P 他们)
-
如果我使用上面的代码:在 Master.h 文件中:错误:“朋友”没有命名类型。如果我在 Master.h 中#include "Friend.h",我会在 Friend.h 中得到一个错误:错误:'Master' has not been declared。然而#include "Master.h" 就在那里。
标签: c++