[英]parent class default constructor to be enter by user then through inheritance - C++
在我的子類中,當我使用繼承並設置默認值時: UserAccout("user","pass");
是否可以從cin
獲取輸入?
這是我的代碼示例。
我有我的父類
class UserAcct
{
private:
string userName;
string userPassword;
public:
UserAcct(string newUserName, string newPassword);
~UserAcct();
};
這是 UserAcct.cpp
UserAcct::UserAcct(string newUserName, string newPassword)
{
userName = newUserName;
userPassword = newUserName;
}
這是我的孩子班,可以這么說
class GameSettings : public UserAcct
private:
ofstream odataBase("gameSettings.txt", ios::app);
ifstream idataBase("gameSettings.txt", ios::app);
int settingSet;
public:
GameSettings(int newSettings);
子類.cpp
GameSettings::GameSettings (int newSettings) : UserAcct("user","pass")//this right here
{
settingsSet = newSettings;
}
附: 由於某種原因,繼承不起作用,我不確定為什么。 在:
在“ : UserAcct("user","pass");
之前的子類 .cpp 下,我收到一條錯誤消息
錯誤:應為“{”
問題 1:
您可以通過進行函數調用從cin
獲取輸入。
GameSettings::GameSettings (int newSettings) : UserAccout(getUserName(), getPassword()) {}
其中getUserName()
可以是GameSettings
的static
成員函數或非成員全局函數。
static std::string getUserName()
{
std::string name;
cin >> name;
return name;
}
getPassword()
可以是一個類似的函數。
問題2:
您看到編譯器錯誤,因為您以;
結束了以下內容;
.
GameSettings::GameSettings (int newSettings) : UserAccout("user","pass");
^^^
;
需要替換為{}
以及函數體內的任何其他內容。
PS您正在使用UserAcct
和UserAccout
。 那需要修復。 也許你應該把它拼出來以避免將來混淆。 使用用戶UserAccount
。
您的實現需要一個主體:
GameSettings::GameSettings (int newSettings) : UserAccout("user","pass") { }
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.