如何为外部类的对象实例化内部类的构造函数
How can I instantiate the constructor of the inner class for an object of the outer class?
我正在尝试实现一个类,它有另一个类作为成员。
class Book
{
class Author;
}
在.cpp文件中,我实现类Author,如下所示:
class Author
{
string firstName;
string lastName;
public:
// the constructor for the class
Author(string _firstName, string _lastName)
{
firstName = _firstName;
lastName = _lastName;
}
}
我想做以下事情:在main中,当我声明类Book的对象时,我希望它从上面的代码中实例化类Authorook类的构造函数来实现这一点,然后使用它们实例化Author的构造函数,如下所示:
Book::Book(string a, string b)
{
Book::Author(a, b);
}
但如果我这样做,如果我有另一个内部类,作为类Book的成员,比如说有-4个成员,那么对于Book构造函数来说,我会有太多的参数。
所以我的问题是:当我创建主类的对象时,是否有其他方法可以实例化作为成员的类的构造函数?
还有,如果这些成员是类,我该如何打印主类的成员?我试图使<lt;内部类的运算符,但我得到错误:"无效使用非静态数据成员。"
我认为您在C++内部类方面犯了一个错误。没有内部类只有嵌套类,这是不一样的。
嵌套类是在另一个类的定义/声明中进行定义/声明的类。但是,这个关系是类型上的关系,而不是类实例上的关系。
如果你想为一本书找到一位作者,你必须建立一个聚合或类似的东西,比如:
class Book {
class Author {
string name;
// How to initialize an author (give him a name)
Author(string n) : name(n) { }
};
string title;
Author theAuthorOfTheBook;
// How to initialize a book (giving him a title and setting up an author with a given name)
public :
Book(string t,string n) : title(t), theAuthorOfTheBook(n) {}
};
嵌套定义很有趣,因为您可能有其他一些创作的概念,用于不同的目的,而与图书创作无关。这个嵌套的定义可以让您轻松地谈论图书创作(Book::Author
)。
我添加了一个字段theAuthorOfTheBook
来定义Book概念的属性。这可能需要在Book的构造中进行初始化(参见actors定义)。
相关文章:
- 对象实例化调用构造函数的次数太多
- 为什么C++无法识别我的对象实例化?
- 使用大括号和 : 符号的对象实例化
- 对象实例化与类型C++
- cpp 静态对象实例化
- 用户创建的类对象实例化的未申请标识符
- 对象实例化后不输出
- 限制对象实例化堆
- 未知的 C++ 对象实例化语法
- 由于命名空间而导致的对象实例化错误
- C 在对象实例化时如何分开声明和构造函数
- JNI Java对象实例化期间的Segfault
- C++ 类文件中的对象实例化
- C++ 中的对象实例化
- 无法理解浮点数和对象实例化之间比较的原因
- C++对象实例化与赋值
- C++:用友元类限制对象实例化
- 将类中的对象实例化数限制为给定数量
- 使用 Sizeof、malloc 和 cast 的 C++ 对象实例化
- 通用成员函数定义,可从 'const' 和 'non-const' 对象实例化