如果我有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);
但我不确定在何处或如何定义字符串应该是什么。
答案 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"}.
...
};
但是有了这个,你只能用编译时常量调用构造函数。