【问题标题】:Set member data of classes object设置类对象的成员数据
【发布时间】:2014-04-27 18:36:53
【问题描述】:

我无法理解为什么我不能在另一个对象内设置成员对象的字符串。这是仅提供空白输出的特定行: cout

#include <iostream>
#include <time.h>
#include <stdlib.h>
#include <sstream>
#include <string>
using namespace std;


class class2 {
  string s2;
  public:
         string getS2() const {return s2;};
         void setS2(string s) {s2.assign(s);};    
};

class class1 {
  string s1;
  class2 c2;
    public:
      string getName() const {return s1;};
      void setName(string s) {s1 = s;};
      class2 getC2() const {return c2;};
      void setC2(class2 c) {c2 = c;};
};

int main() {
  class1 c1;
  class2 c2t;
  string input;
  getline(cin, input);
  cout << "input: " << input << endl;
  c1.getC2().setS2(input);
  cout << c1.getC2().getS2() << endl;//This line is always blank
  //c2t = c1.getC2();
  //c2t.setS2(input);
  //c1.setC2(c2t);
  //cout << c1.getC2().getS2() << endl;

 cin.get();   
}

【问题讨论】:

    标签: c++ object


    【解决方案1】:

    c1.getC2() 返回一个副本

    因此,当您执行 c1.getC2().setC2(input) 时,您将在 副本 上调用 setC2,并且该更改会立即丢失。

    查看您的成员函数的引用

    【讨论】:

    • 我不敢相信我没有想到这一点。谢谢。
    猜你喜欢
    • 2012-04-11
    • 1970-01-01
    • 1970-01-01
    • 2017-01-23
    • 1970-01-01
    • 1970-01-01
    • 2021-05-20
    • 1970-01-01
    • 2014-04-20
    相关资源
    最近更新 更多