[英]Why string is not printed?C++
#include <iostream>
using namespace std;
template<class T>
class Array{
public:
T U[10];
friend void DataOut(Array<string>);
friend void GetData(Array<string>);
};
void DataOut(Array<string> Array1){
cout << Array1.U[0];
}
void GetData(Array<string> Array1){
cin >> Array1.U[0];
cin.clear();
}
int main(){
Array<string> Arr1;
GetData(Arr1);
DataOut(Arr1);
}
我制作了一个 class 模板并创建了两个函数:用于输入字符串的GetData
和用于打印该字符串的DataOut
,但在输入字符串后它不会打印它。 我做错了什么?
我在我做出更改的地方发表了评论。 主要修复方法是通过引用传递您的 object,尤其是 Getdata Getdata()
。 您传递了一个副本,将数据放入副本中,当 function 结束时,副本消失了,您的原始 object 从未被触及。
#include <iostream>
using namespace std;
template <class T>
class Array {
public:
T U[10];
friend void DataOut(
const Array<string>&); // CHANGED: Need to take object by reference
friend void GetData(Array<string>&); // SAME
};
void DataOut(const Array<string>& Array1) { // SAME
cout << Array1.U[0];
}
void Getdata(Array<string>& Array1) { // SAME
cin >> Array1.U[0];
// cin.clear(); // CHANGED: Why?
}
int main() {
Array<string> Arr1;
Getdata(Arr1);
DataOut(Arr1);
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.