boost::ref都是在什么时候使用哦

z__j__s 2013-09-07 08:42:59
boost::ref都是在什么时候使用哦,不理解
比如: void func(int a); 如果使用:int a=0; func(boost::ref(a));这个最后传到函数里的还是值,也就是效果和直接func(a)效果一样的
比如: void func(int &a); 如果使用:int a = 0; func(boost::ref(a));这个使用效果也和直接调用func(a)一样

还有个问题哦
struct A
{
public:
A(int a) { i = a; }
private:
int i;
};

如果使用A(3); 编译没问题
如果使用int a = 3; A(a); 编译就会出错,报错:
error C2371: “a”: 重定义;不同的基类型
error C2512: “A”: 没有合适的默认构造函数可用

那这个A(a)到底做了什么 会报这个错,按道理说只是生成一个临时变量啊


望高人指点,谢谢
...全文
210 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
taodm 2013-09-07
  • 打赏
  • 举报
回复
关键是你自己知道A(a);这是在干什么么?
z__j__s 2013-09-07
  • 打赏
  • 举报
回复
A(a);这个是没用的东西 没用是没用,我只是想知道为什么会报错
z__j__s 2013-09-07
  • 打赏
  • 举报
回复
你明尽挖苦啊 指点下为什么不可以写出来呢 比如有个形参是要A 我传个临时变量进去就好了 不对吗
taodm 2013-09-07
  • 打赏
  • 举报
回复
A(a); 你都能写得出来?这基础实在够差的了。
z__j__s 2013-09-07
  • 打赏
  • 举报
回复
好 那不说boost 那这个是什么问题呢 struct A { public: A(int a) { i = a; } private: int i; }; 如果使用int a = 3; A(a); 编译就会出错,报错: error C2371: “a”: 重定义;不同的基类型 error C2512: “A”: 没有合适的默认构造函数可用
taodm 2013-09-07
  • 打赏
  • 举报
回复
boost库的文档有中文版的,自己去找来看看 这恐怕不是几句话可以说清楚的东西。
z__j__s 2013-09-07
  • 打赏
  • 举报
回复
那大概是怎么样的,指点下
taodm 2013-09-07
  • 打赏
  • 举报
回复
都错到姥姥家了
z__j__s 2013-09-07
  • 打赏
  • 举报
回复
你是说ref是C++11出来后,才出现的东西吗 目前按我的理解,ref只在右值引用中有用,boost::ref把实参类似转成右值引用给函数 不知道对不对
taodm 2013-09-07
  • 打赏
  • 举报
回复
boost库需要系统地学习的。 你还没到这个程度,就先别看boost和C++11相关的代码。
木头菇 2013-09-07
  • 打赏
  • 举报
回复
引用 9 楼 z__j__s 的回复:
A(a);这个是没用的东西 没用是没用,我只是想知道为什么会报错
int(b)=3;(注意,int和括号之间没空格)和你那个一样,看懂为什么报错了吗 上面那个帖子@错人了
木头菇 2013-09-07
  • 打赏
  • 举报
回复
引用 10 楼 taodm 的回复:
关键是你自己知道A(a);这是在干什么么?
int(b)=3;(注意,int和括号之间没空格)和你那个一样,看懂为什么报错了吗
  • 打赏
  • 举报
回复
引用 8 楼 z__j__s 的回复:
你明尽挖苦啊 指点下为什么不可以写出来呢 比如有个形参是要A 我传个临时变量进去就好了 不对吗
先系统的从基础开始学,一开始就搞boost之类,会很痛苦而且没啥效果.

64,639

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧