收录日期:2020/07/05 18:42:08 时间:2016/07/16 20:34:33 标签:C++ 语言
int& getvalue() {return itssize;}
itssize是int类型;编译时出现:不能将int类转化为int&。为什么?
itssize的定义代码中没给出,不过估计是在getvalue()中定义的吧?是这样,itssize是getvalue中的局部变量,当getvalue函数结束后,函数中的局部变量都将销毁,返回一个马上就要销毁的引用,很明显没有意义。
按照语义,应该是
const int& getvalue() const {return itssize;} 
引用楼主 fmxshj 的回复:
int& getvalue() {return itssize;}
itssize是int类型;编译时出现:不能将int类转化为int&。为什么?


函数返回的时候会创建itssize的一个临时对象,int&就会引用这个临时对象,但C++的规则禁止非const引用指向临时对象,因此出错,应改为const int& getvalue() { return itssize; }

#include "stdafx.h"
#include <iostream> 
#include <string>
#include <vector>
using namespace std;

int& b();
int main(){
int i = b();
cout<<i;

return 0;
}

int& b(){
int a = 4;
return a;
}


小天  你弄错了吧?返回值是引用,就算产生临时对象,也是引用类型的临时对象,最终引用的还是局部变量
...
能看到飞天御剑出错真不容易,纪念一下
int& getvalue()
{
int itssize = 0;
return itssize;
}
VC2005下,只有告警warning C4172: 返回局部变量或临时变量的地址,编译仍可以通过

不可能说VC2005明知道这个问题,而采用和标准不同的做法吧
改成返回const引用,结果不变
const int& getvalue()
{
int itssize = 0;
return itssize;
}
而如果放在类里面,int&就没有告警
class A
{
private:
int itssize;
public:
int& get()
{
return itssize;
}
};
其他把itssize作为全局变量,或者函数内部静态变量都是过了,没有告警
我编译没有问题呀 

如何得到本机的用户名 有谁知道哪里有免费的统计程序行数的软件? 为什么进程会无故被系统KILL呢? Jsp中如何得到javascript中的变量值 请大家讨论一下,做一个三层结构的ERP的单据模板应注意的问题?应从那几方面考虑?该怎么做? 新项目,新建一个名为test.cs的cs文件,编译报错如下:未能找到为 Main 方法指定的“Test.cs”,何故,谢先? 关于调用约定的问题? 如何解决登录密码 请问各位都用什么测试工具? dcom可否实现internet访问 经常和计算机接触的女性网友请进:经常面对计算机使肌肤变坏,如何防止肌肤变坏的文章 如何获得HTML页面中的对象啊 这个视图怎么写? 请问如何在FLASH得到模糊渐变效果? 散分!帮忙提供Wise Installation System 9.02原版的安装序列号!来信myz999@yahoo.com.cn 一个大家都能遇到的问题? 怎样的组件中使用资源文件 请问图片的阴影效果怎么做,里面有例子,请进,高分~~ 关于g++和c++标准库兼容问题 关于delphi存储过程控件使用碰到的一个问题,在线等待!!! 电子商务的需求分析如何写?(没有学过软件工程) 急急急急!!!! 如何检索记录 紧急求救!不会的都来看 如何分析《金山词霸》的词典文件(.dic)的数据结构? 如何实现抽象数据结构到高级语言的转换? 谁知道中关村企业招聘团到那了? 各位高手!在网页中怎样定义文字链接,的颜色?让链接和其他的文字颜色一样???Dreamwearer中如何实现?? 怎样做产品的License控制(在线等待)? 求助:自动周期的执行at命令