我想做一個簡單的朋友功能工作,但不是隻在一個源文件中。我似乎得到一個錯誤,我似乎無法找到答案爲什麼。C++ - 朋友功能
請看看我的代碼:
----------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.cpp------------
#include <iostream>
#include "classOne.h"
using namespace std;
ClassOne::ClassOne(int a, int b) {
m_a = a;
m_b = b;
}
void ClassOne::printValuesOne() {
cout << "m_a: " << m_a << " " << "m_b: " << m_b << endl;
}
。
----------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和ClassTwo是同樣的事情,但只有ClassTwo的方法之一可以訪問所有ClassOne的成員,所以ClassTwo可以打印ClassOne的成員變量。然而,當我嘗試編譯整個程序(我還沒有在這裏提供的主要方法),我得到這個錯誤的錯誤:
classOne.h:19:15: error: ‘ClassTwo’ has not been declared
friend void ClassTwo::twoPrintsOne();
^
能
別人的幫助和解釋?
能解決問題,但隨後帶來了另一個問題,在classTwo.cpp的twoPrintsOne()函數,即M_A和M_B不在範圍內聲明。我不確定他們的意思,以及我如何解決這個問題。 – tenkii 2014-10-10 23:24:23