2015-10-12 5 views
-1

Я новичок в C++ и Java, можно было легко использовать массивы других классов и мне было интересно, если есть способ, чтобы использовать массивы других классов, как это:Как инициализировать и использовать массив другого класса в классе? (C++)

#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; 
} 

Почему не могу ли я использовать массив класса Message в классе UserMessageFile? Должен ли я включать класс Message внутри класса UserMessageFile, прежде чем я смогу это сделать? Как именно я это достигаю?

ответ

5

Вы не можете указать массив с неизвестным размером в качестве члена класса (на самом деле вы не можете указать его, если он не содержит статический инициализатор, и вы не можете иметь те, которые содержатся в определении класса).

То, что вы ищете, это std::vector.

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

Плюс синтаксис также неверен –

+0

Хорошо, я посмотрю на это! Благодаря! – cjones3724

2

Вы должны почти всегда искать типы std::. Поэтому используйте std::vector или std::array. Если вам действительно нужно использовать массив с стиль вы должны сделать это:

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. Классы должны заканчиваться semicoln (class a {};).
  2. Не используйте ... в своем классе, это не признано.
Смежные вопросы