繁体   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