如何在另一个类中调用自定义构造函数

时间:2016-07-07 21:22:34

标签: c++

如果我有2个类,一个带有自定义构造函数,另一个带有第一个类的实例。如何使用自定义构造函数创建该实例。

例如:

A.H

class A
{
public:
    A(std::string input);
};

b.h

Class B
{
public:
    A a("Greetings");
};

这不能正常工作,它在字符串本身上给出了“期望类型说明符”的错误,每当我在B类中使用A类成员时,它表示“表达式必须具有类类型”

我假设这意味着我需要做到这一点

A a(std::string words);

但我不确定在何处或如何定义字符串应该是什么。

1 个答案:

答案 0 :(得分:2)

使用构造函数初始化列表

class A
{
public:
    A (std::string input);
};

class B
{
    A a;
public:
    B (std::string s) : a (s) {}; //This calls the constructor of A on 'a'
};

此外,在C ++ 11中,您可以使用统一初始化语法

class B
{
    A a {"Greetings"}.
    ...
};

但是有了这个,你只能用编译时常量调用构造函数。