C++ C++;-朋友功能

C++ C++;-朋友功能,c++,friend,C++,Friend,我正在尝试使一个简单的friend函数工作,但不只是在一个源文件中。我似乎犯了一个错误,但我似乎找不到原因的答案 请看一下我的代码: ----------classOne.h-------------- #ifndef CLASSONE_H_ #define CLASSONE_H_ using namespace std; class ClassOne { private: int m_a; int m_b; public: ClassOne(int a, int

我正在尝试使一个简单的friend函数工作,但不只是在一个源文件中。我似乎犯了一个错误,但我似乎找不到原因的答案

请看一下我的代码:

----------classOne.h--------------
#ifndef CLASSONE_H_
#define CLASSONE_H_

using namespace std;

class ClassOne {
private:
    int m_a;
    int  m_b;
public:
    ClassOne(int a, int b);
    void printValuesOne();
    friend void ClassTwo::twoPrintsOne();
};
-

-


有人能帮忙解释一下吗?

ClassOne
不知道
ClassTwo
,因此它不能与任何方法交朋友。您必须添加:

#include "classTwo.h"

除了classOne.h.

之外,你还对“朋友”应该做什么感到困惑。 “交友”class2将允许class2访问class1的私有成员,就像他们是公共成员一样。 它不会以任何方式将这些成员链接到两个类之间


您可以让ClassTwo从ClassOne继承,或者在ClassTwo

中添加一个ClassOne成员来修复该问题,但这会给ClassTwo.cpp中的twoPrintsOne()函数带来另一个问题,即m_a和m_b未在范围中声明。我不知道它们是什么意思,也不知道我怎样才能解决这个问题。
----------classTwo.h-------------
#ifndef CLASSTWO_H_
#define CLASSTWO_H_

using namespace std;

class ClassTwo {
private:
    int m_c;
    int m_d;
public:
    ClassTwo(int c, int d);
    void printValuesTwo();
    twoPrintsOne();
};

#endif
---------classTwo.cpp-----------
#include <iostream> 
#include "classTwo.h"

using namespace std;

ClassTwo::ClassTwo(int c, int d) {
    m_c = c;
    `enter code here`m_d = d;
}

void ClassTwo::printValuesTwo() {
    cout << "m_c: " << m_c << " " << "m_d: " << m_d << endl;
}

void twoPrintsOne() {
    cout << "ClassTwo: " << m_a: " << m_a << " " << "m_b: " << m_b << endl;
}
classOne.h:19:15: error: ‘ClassTwo’ has not been declared
friend void ClassTwo::twoPrintsOne();
            ^
#include "classTwo.h"