网页资讯视频图片知道文库贴吧地图采购
进入贴吧全吧搜索

 
 
 
日一二三四五六
       
       
       
       
       
       

签到排名:今日本吧第个签到,

本吧因你更精彩,明天继续来努力!

本吧签到人数:0

一键签到
成为超级会员,使用一键签到
一键签到
本月漏签0次!
0
成为超级会员,赠送8张补签卡
如何使用?
点击日历上漏签日期,即可进行补签。
连续签到:天  累计签到:天
0
超级会员单次开通12个月以上,赠送连续签到卡3张
使用连续签到卡
02月07日漏签0天
c++吧 关注:652,074贴子:2,117,930
  • 看贴

  • 图片

  • 吧主推荐

  • 游戏

  • 1 2 下一页 尾页
  • 23回复贴,共2页
  • ,跳到 页  
<<返回c++吧
>0< 加载中...

关于友元函数的编译没通过,求帮助!!

  • 只看楼主
  • 收藏

  • 回复
  • yekenyh
  • &&
    6
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
#include <iostream>
#include "string"
using namespace std;
class Screen;
class Cursor
{
     typedef string::size_type index;
     void relocate(index, index, Screen& C)
     {cout << C.name << endl;}
private:    
};
class Screen
{
     friend void Cursor::relocate(Cursor::index, Cursor::index, Cursor::Screen& C);
     Screen(string &b):name(b){}
private:
     string name;
};
int main()
{
     Cursor A;
     Screen B("HAHA");
     A.relocate(1,1,B);
     system("PAUSE");
     return 0;
}
error C2027: use of undefined type 'Screen'
error C2228: left of '.name' must have class/struct/union type
error C2039: 'Screen' : is not a member of 'Cursor'
error C2664: '__thiscall Screen::Screen(class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > &)' : cannot convert parameter 1 from 'char [5]'
to 'class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > &'
error C2248: 'relocate' : cannot access private member declared in class 'Cursor'
可能是涉及哪个类先定义,哪个先声明的问题,~~迷惘,求解释求改正


  • Copyleft_X
  • |
    7
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
吧定义与声明分开写


2026-02-07 04:11:19
广告
不感兴趣
开通SVIP免广告
  • Copyleft_X
  • |
    7
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
是实现和定义……


  • 雨夜『曳雨』
  • |
    7
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼


  • yekenyh
  • &&
    6
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
能详细点么。。不太清楚
void relocate(index, index, Screen& C)
      {cout << C.name << endl;}
这个么?还是什么


  • yekenyh
  • &&
    6
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
把relocate 写到Screen类后面,
void Cursor::relocate(index, index, Screen& C)
{   {cout << C.name << endl;}}
有个错误是没了,但其他错误没解决。。肿么改啊



  • 雨夜『曳雨』
  • |
    7
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
#include <iostream>#include <string>using namespace std;class Screen;class Screen{public:   Screen(string &b):name(b){}//构造竟然私有 friend class Cursor;private:   string name;};class Cursor{public:   typedef string::size_type index;   void relocate(index, index, Screen& C)   {cout << C.name << endl;}private: };
int main(){   Cursor A;   Screen B(string("HAHA"));//汗~~   A.relocate(1,1,B);   system("PAUSE");   return 0;}


  • yekenyh
  • &&
    6
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
错误百出了。。但是还是没指出关重点。。重新更正下:
#include <iostream>
#include "string"
using namespace std;
class Screen;//不是有前声明Screen么
class Cursor
{
public:
     typedef string::size_type index;
     void relocate(index, index, Screen& C);//主要这里的Screen
};
class Screen
{
public:
     friend void Cursor::relocate(Cursor::index, Cursor::index, Cursor::Screen& C);    //error C2039: 'Screen' : is not a member of 'Cursor'
     Screen(const string &b):name(b){}
private:
     string name;
};
void Cursor::relocate(index, index, Screen& C)
{
      {cout << C.name << endl;}
}
int main()
{
     Cursor A;
     Screen B("HAHA");
     A.relocate(1,1,B);
     system("PAUSE");
     return 0;
}
更正成这样,但还编译不过!


2026-02-07 04:05:19
广告
不感兴趣
开通SVIP免广告
  • Copyleft_X
  • |
    7
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
把报错的那行的Screen前面的Cursor去掉就可以了……
作用域哪……



  • yekenyh
  • &&
    6
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
friend void relocate(Cursor::index, Cursor::index, Cursor::Screen& C);
这样?。。。不行的



  • 六月的微笑
  • <<
    12
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
全部私有,编译个毛


  • yekenyh
  • &&
    6
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
看8楼,已修改了!!


  • 陨落无极
  • ==
    10
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
Cursor::Screen& C 这是在干嘛


  • Copyleft_X
  • |
    7
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
为什么我这可以……
friend void Cursor::relocate(Cursor::index, Cursor::index, Screen& C);
泥媒是这样改的嘛……


2026-02-07 03:59:19
广告
不感兴趣
开通SVIP免广告
  • yekenyh
  • &&
    6
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
Oh...我错了。。。


登录百度账号

扫二维码下载贴吧客户端

下载贴吧APP
看高清直播、视频!
  • 贴吧页面意见反馈
  • 违规贴吧举报反馈通道
  • 贴吧违规信息处理公示
  • 1 2 下一页 尾页
  • 23回复贴,共2页
  • ,跳到 页  
<<返回c++吧
分享到:
©2026 Baidu贴吧协议|隐私政策|吧主制度|意见反馈|网络谣言警示