[英]How to get values for the variables inside a class using a friend functions
#include <iostream>
#include <string>
using namespace std;
class person {
string name;
int age;
public :
person() {
name = "no data found";
age = 0;
}
person(string x, int y) {
name = x;
age = y;
}
friend void getdata(person);
friend void printdata(person);
};
void getdata(person x) {
cout<<"Enter name : "<<endl;
getline(cin, x.name);
cout<<"Enter age : "<<endl;
cin>>x.age;
};
void printdata(person x) {
cout<<"Name : "<<x.name<<endl;
cout<<"Age : "<<x.age<<endl;
}
int main() {
person a;
getdata(a);
person b("Raj Mishra", 17);
printdata(a);
printdata(b);
return 0;
}
在上面的代碼中,即使我通過 getdata(a) function 輸入值,當 printdata(a) function 運行時,默認構造函數中的值也會顯示在控制台屏幕上。
當我使用構造函數創建 object 時,情況並非如此,就像創建 object b 時一樣。 我該怎么辦?
您必須通過參考傳遞person
object :
class person {
// ...
friend void getdata(person&);
friend void printdata(person const&);
};
void getdata(person& x) {
// ^
std::cout << "Enter name : " << std::endl;
getline(std::cin, x.name);
std::cout << "Enter age : " << std::endl;
std::cin >> x.age;
};
void printdata(person const& x) {
// ^^^^^^
std::cout << "Name : " << x.name << std::endl;
std::cout << "Age : " << x.age << std::endl;
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.