【发布时间】:2014-07-18 01:16:53
【问题描述】:
我正在尝试创建一个函数,该函数根据收到的参数返回我拥有的 3 个全局对象之一,但我收到以下错误: 从“block”类型的临时变量初始化“block&”类型的非常量引用无效。
我对 C++ 和引用不是很熟悉,但我尝试了不同的方法,但似乎没有任何效果。这样做的正确方法是什么?
当然,我想要的是实际选择的全局对象从 getBlock 传递到 modifyBlock 以便对其进行修改;最后程序应该打印“IT WORKS!”。
#include <string>
#include <iostream>
using namespace std;
class block
{
public:
string blockId;
block (string id);
};
block::block(string id)
{
blockId=id;
}
block A = block("A");
block B = block("B");
block getBlock (string b)
{
if(A.blockId==b)
return A;
else return B;
}
block modifyBlock (block &x)
{
x.blockId="IT WORKS!";
}
int main ()
{
string b;
cout<<"Which block? ";
cin>>b;
modifyBlock(getBlock(b));
cout<<endl<<getBlock(b).blockId;
}
【问题讨论】:
标签: c++ function object reference global