繁体   English   中英

返回对属性的引用(GCC)

[英]Return a reference to an attribute (GCC)

我第一次使用gcc(以前是msvc),现在我在我的类中返回对变量的引用时遇到了一些问题。 这是代码:

class Foo
{
public:

  const int& getMyVar() const
  {
      return mMyVar;
  }

private:
  int mMyVar;
};

如果有一个比简单的int更大的数据结构,我无法想象我必须返回一个副本而不是一个引用。

这是编译错误

错误:从'int'类型的表达式初始化'int&'类型的引用无效

如果你能帮助我并告诉我如何解决我的问题,那将是很棒的。

给定以下代码,这是您的类的一个小变体(添加构造函数;在类之后添加分号)和一个简单的main() ,我得到编译错误:

z1.cpp: In function ‘int main()’:
z1.cpp:19:26: error: invalid initialization of reference of type ‘int&’ from expression of type  ‘const int’

第19行是const int &v2 = f.getMyVar(); 线。 删除参考标记,没关系。

class Foo
{
public:

  Foo(int n = 0) : mMyVar(n) {}
  const int& getMyVar() const
  {
      return mMyVar;
  }

private:
  int mMyVar;
};

int main()
{
    Foo f;
    int  v1 = f.getMyVar(); // Copies result
    int &v2 = f.getMyVar(); // Error: must be const
    const int &v3 = f.getMyVar(); // OK as long as there's a default constructor
    return v1 + v2 + v3;
}

它将在没有构造函数初始化的情况下编译。

#include<iostream>
using namespace std;

class Foo
{
  int mMyVar;

public:

  const int& getMyVar() const{return mMyVar;}
};

int main()
{
  Foo foo;
  int a = foo.getMyVar();
  const int &b = foo.getMyVar();
  cout<<"My Var a is: "<< a<<endl;
  cout<<"My Var b is: "<< b;
  cin.get();
  return 0;   
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM