如何在类中初始化和使用另一个类的数组? (C ++)

时间:2015-10-12 20:57:51

标签: c++ arrays

所以我是C ++和Java的新手,很容易使用其他类的数组,我想知道是否有办法使用其他类的数组:

#include <iostream>
#include <array>
#include <string>

using namespace std;

class Message
{...}
class UserMessageFile
{
    private:
        Message[] messages;
}
int main(int argc, const char * argv[])
{
        return 0;
}

为什么我不能在UserMessageFile类中使用Message类的数组?在我可以执行此操作之前,是否需要在UserMessageFile类中包含Message类?我究竟是如何实现这一目标的?

2 个答案:

答案 0 :(得分:5)

您不能将具有未知大小的数组指定为类成员(事实上,除非它带有静态初始化程序,否则您不能指定一个,并且您不能在类定义中使用它们。)

您要找的是std::vector

class UserMessageFile
{
private:
    std::vector<Message> messages;
};

答案 1 :(得分:2)

您几乎总是希望使用std::类型。因此,请使用std::vectorstd::array。如果你真的需要使用c风格的数组,你必须这样做:

Messages messages[10]; // Your syntax must have the array 
                       // braces at the end and you must specify
                       // an array length.

Here is a live example.

其他语法错误包括:

  1. 类必须以分号(class a {};)结束。
  2. 不要在课堂上使用...,这是不可识别的。