可以使用类对象c ++调用构造函数初始化字段

时间:2015-11-30 20:05:22

标签: c++ class object constructor initializer-list

我有两个课程,一个是" bank"和一个"帐户"。 Account的构造函数接受一个int和一个字符串。银行应该有两个类型为" account"在里面。是否可以拥有两个"帐户"字段初始化列表中的对象是动态分配的,而不是静态值?

这是我有静态分配它的代码

    class Bank
{
public:
    Bank():checkings( 500, "C"), saving( 300, "s"){} //predfined int and string

private:
    Account checkings;
    Account saving;

};

有可能这样做吗?我希望构造器根据用户输入动态分配其字段。我一直在收到错误,所以我不确定我的语法是否错误。

    class Bank
{
public:
    Bank():checkings( int val, string s), saving( int val, string s){} //dynamic

private:
    Account checkings;
    Account saving;

};

另外,如何在.cpp文件中调用这种类型的构造函数?

1 个答案:

答案 0 :(得分:2)

您不能在成员初始值设定项中放置声明(如int val),只能放置表达式(可以包含以前声明的变量)。

看起来好像你想要:

class Bank
{
public:
    Bank(int val, std::string s) : checkings(val, s), saving(val, s) {}
    // ...
};

或:

class Bank
{
public:
    Bank(int check_val, std::string check_s,
         int sav_val, std::string sav_s) :
        checking(check_val, check_s), saving(sav_val, sav_s) {}
    // ...
};