c++ - 设置类对象的成员数据

标签 c++ object

我无法理解为什么无法在另一个对象内设置成员对象的字符串。这是仅给出空白输出的特定行: cout << c1.getC2().getS2() << endl; 任何帮助将不胜感激。

#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();   
}

最佳答案

c1.getC2() 返回一个拷贝

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

查看您的成员函数的引用

关于c++ - 设置类对象的成员数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23327362/

相关文章:

c++ - 如何扩展 std::apply 以处理非元组类型?

c++ - 使用哨兵试验查找算法

c++ - 分配时 unordered_map 更改的顺序

c++ - 用数字对 std::strings 进行排序?

javascript - 从 Node 中解析的 csv 文件构建对象数组

javascript - 循环的现代语法与旧语法

javascript - 当某些键是数字时,按对象键对数据排序不起作用

java - 将多个对象写入和读取到文件

c# - 如何在 C# 中将数组放入结构中?

c++ - 如何实例化一个主窗口函数可以访问的对象?