我无法理解为什么无法在另一个对象内设置成员对象的字符串。这是仅给出空白输出的特定行: 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/