这里友元函数已声明,为什么还是不能调用private里的函数呢

img


}
#define _CRT_SECURE_NO_WARNINGS
#include
#include
using namespace std;
class f2;
class f1
{
char* name;
void output()
{
cout << name << endl;
}
public:
friend void f2::input(f1 part);/友元函数声明格式/
void putin(const char* m_name)/公有方法/
{
if (m_name != NULL)/非空检测/
{
name = new char[20];/notice/
strcpy(name, m_name);
}
}

};
class f2
{
private:
f1* fp;
public:

void input(f1 part)
{
    fp->putin("明日科技");/*使用指向对应类的指针来运用公有方法*/
    part.output

};
int main()
{
f2 list;
f1 part;
list.input(part);
return 0;
}

因为f1不知道f2::input是个什么东西

#define _CRT_SECURE_NO_WARNINGS
#include
#include<stdio.h>
using namespace std;
class f1;
class f2
{
private:
f1* fp;
public:
void input(f1&a)
{
fp = &a;
fp->putin("明日科技");/使用指向对应类的指针来运用公有方法/
a.output();
}
};
class f1
{
friend void f2::input(f1&a);/友元函数声明格式/
public:
void putin(const char* m_name)/公有方法/
{
if (m_name != NULL)/非空检测/
{
name = new char[20];/notice/
strcpy(name, m_name);
}
}
private:
char* name;
void output()
{
cout << name << endl;
}
};
int main()
{
f2 list;
list.input();
return 0;
}
换位后还是不行呢?

img

不知道你这个问题是否已经解决, 如果还没有解决的话:

如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^