簡體   English   中英

父類默認構造函數由用戶輸入然后通過繼承 - C++

[英]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()可以是GameSettingsstatic成員函數或非成員全局函數。

static std::string getUserName()
{
   std::string name;
   cin >> name;
   return name;
}

getPassword()可以是一個類似的函數。

問題2:

您看到編譯器錯誤,因為您以;結束了以下內容; .

GameSettings::GameSettings (int newSettings) : UserAccout("user","pass");
                                                                        ^^^

; 需要替換為{}以及函數體內的任何其他內容。

PS您正在使用UserAcctUserAccout 那需要修復。 也許你應該把它拼出來以避免將來混淆。 使用用戶UserAccount

您的實現需要一個主體:

GameSettings::GameSettings (int newSettings) : UserAccout("user","pass") { } 

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM