繁体   English   中英

为什么不打印字符串?C++

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM