C++ 为什么不打印字符串?C++; #包括 使用名称空间std; 模板 类数组{ 公众: tu[10]; 友元无效数据输出(数组); 获取数据(数组); }; 无效数据输出(数组数组1){ cout>Array1.U[0]; cin.clear(); } int main(){ 阵列Arr1; GetData(Arr1); 数据输出(Arr1); }
我制作了一个类模板并创建了两个函数:C++ 为什么不打印字符串?C++; #包括 使用名称空间std; 模板 类数组{ 公众: tu[10]; 友元无效数据输出(数组); 获取数据(数组); }; 无效数据输出(数组数组1){ cout>Array1.U[0]; cin.clear(); } int main(){ 阵列Arr1; GetData(Arr1); 数据输出(Arr1); },c++,string,C++,String,我制作了一个类模板并创建了两个函数:GetData用于输入字符串和DataOut用于打印该字符串,但在输入字符串后它不会打印该字符串。我做错了什么?我把评论放在我所做更改的地方。主要修复方法是通过引用传递对象,特别是传递到Getdata()。您传递了一个副本,将数据放入副本,当函数结束时,副本消失,您的原始对象从未被触碰过 #包括 使用名称空间std; 模板 类数组{ 公众: tu[10]; 朋友无效数据输出( 常量数组&);//已更改:需要通过引用获取对象 friend void GetDat
GetData
用于输入字符串和DataOut
用于打印该字符串,但在输入字符串后它不会打印该字符串。我做错了什么?我把评论放在我所做更改的地方。主要修复方法是通过引用传递对象,特别是传递到Getdata()
。您传递了一个副本,将数据放入副本,当函数结束时,副本消失,您的原始对象从未被触碰过
#包括
使用名称空间std;
模板
类数组{
公众:
tu[10];
朋友无效数据输出(
常量数组&);//已更改:需要通过引用获取对象
friend void GetData(数组&);//相同
};
无效数据输出(常量数组和数组1){//相同
cout>Array1.U[0];
//cin.clear();//更改:为什么?
}
int main(){
阵列Arr1;
Getdata(Arr1);
数据输出(Arr1);
}
按值传递,而不是按引用传递。如中所示,您正在做什么与您应该做什么。这可能是因为您正在将变量Arr1
的副本传递到Getdata
中,而不是对它的引用。但是如何使用引用呢?这是子问题的答案。为什么?当然要清除流中留下的数据!否则为什么要调用名为clear
的函数?清除错误标志?@user4581301:清除错误标志就是它的作用,如果你想清除剩余的数据,而这些数据将被忽略
,这似乎是不必要的,这正是我想要的。我知道它的作用。
#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);
}