[英]C++ no suitable conversion function from “Date” to “Date (*)()” exists
[英]C++ no suitable conversion function from to exists
我試圖讓 function membername
返回字符串staffmember
和usermember
使用數據類型字符串這不可能嗎? 如果沒有,我可以使用其他數據類型嗎?
string membername()
{
if (member == 1)
{
string studentmember;
cout << "Enter Student Member Name (possible names: Tom, Max, Ben): ";
cin >> studentmember;
return studentmember;
}
if (member == 2)
{
string staffmember;
cout << "Enter Staff Member Name (possible names: Linda, Mary, Bob): ";
cin >> staffmember;
return staffmember;
}
else
{
cout << "Enter a valid number" << endl;
return;
}
}
你可以這樣做:
struct Person
{
int id; // Every person has an ID.
std::string name; // Every person has a name.
// Every Person has a function to input their name,
// implemented (specialized) by the child.
virtual void get_name() = 0;
};
struct Student : public Person // A student is-a person
{
void get_name()
{
std::cout << "Enter Student's name:";
std::getline(std::cin, name);
}
};
struct Staff : public Person // A staff member is-a person
{
void get_name()
{
std::cout << "Enter Staff's name:";
std::getline(std::cin, name);
}
};
student 和 staff 對象有不同get_name
方法。
您可以將他們一般地視為一個人:
Person * p1 = new Student;
Person * p2 = new Staff;
p1->get_name(); // Get the name of the person, using appropriate prompt.
p2->get_name(); // Uses the Staff::get_name() function.
對於模板版本,您必須為人員類型使用方法(或成員)。
template <typename College_Person>
void get_name(College_Person& cp)
{
const std::string person_type_name = cp.get_type_name();
std::cout << "Enter " << person_type_name << " name: ";
std::getline(std::cin, cp.name);
}
或者
template <typename College_Person>
void get_name(College_Person& cp)
{
std::cout << "Enter "
<< cp.person_type_name
<< " name: ";
std::getline(std::cin, cp.name);
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.