2013-08-07 3 views
1

Хорошо, простой вопрос, но я НЕ МОГУ найти ответ, который у меня был до этого ...Как инициализировать массив 'int' как член класса в C++ 11?

Вот оно.

Я обновил свой компилятор и другие на C++ 11, и из-за этого я не могу инициализировать массивы, как я мог заранее. Вот код:

class Something{ 
public: 
    int array[5]; 
    void doSomething(); 
}; 

void Something::doSomething() 
{ 
    array={1,2,3,4,5}; 
} 

Это работало совершенно отлично заранее, я реализовал его в свой новый проект (но потерял код из-за недавнего таяния ...) и не помню, как я это сделал для жизни меня. И я знаю, что это было очень похоже, но при каждой попытке получилось ошибка. Я даже пробовал:

class Something{ 
public: 
    int array[5]; 
    void doSomething(); 
}; 

void Something::doSomething() 
{ 
    int Temparray[]={1,2,3,4,5}; 
    array[]=Temparray[]; 
} 

И еще ничего ... Я не могу понять, что это и трепку моей головы гугла впустую 2 часа программирования ...

+1

Это не сработало. Кажется, вы полагались на некоторое расширение компилятора, какую-то ошибку или просто на вашу неисправную память. –

ответ

1

Я предлагаю std::array

#include <array> 

class Something{ 
public: 
    std::array<int,5> array; 
    void doSomething(); 
}; 

void Something::doSomething() 
{ 
    array = std::array<int,5>{1,2,3,4,5}; 
} 

В качестве альтернативы, скопируйте содержимое:

class Something{ 
public: 
    int array[5]; 
    void doSomething(); 
}; 

void Something::doSomething() 
{ 
    int tmp[] = {1,2,3,4,5}; 
    std::copy(
      std::begin(tmp), 
      std::end(tmp), 
      std::begin(array)); // beware of buffer overrun 
} 
+0

Хорошо, я думаю, мне придется иметь дело с этим. Я все еще могу использовать 'array [x]' с первым параметром? – Molma

+0

@Molma да, оба на самом деле – sehe

+0

Только что получил ошибку от обеих попыток: 1) 'array не является членом std'. 2) 'begin не является членом std' ... – Molma

Смежные вопросы