статический массив int в задаче класса - PullRequest
1 голос
/ 22 августа 2011

Следующие 3 блока кода - это main.cpp, static_class_array.cpp и static_class_array.h соответственно. Я получаю следующую ошибку:

static_class_array.cpp||In constructor 'static_array_class::static_array_class()':|
static_class_array.cpp|5|error: cannot convert '<brace-enclosed initializer list>' to 'int' in assignment|
||=== Build finished: 1 errors, 0 warnings ===|


#include "static_class_array.h"

int main()
{
    static_array_class* array_class;

    array_class = new static_array_class();

    delete array_class;

    return 0;
}


#include "static_class_array.h"

static_array_class::static_array_class()
{
    static_array_class::array[3] = {0,1,2};
}
static_array_class::~static_array_class(){}



#ifndef STATIC_CLASS_ARRAY_H
#define STATIC_CLASS_ARRAY_H

class static_array_class
{
    private:

        static int array[3];

    public:

    static_array_class();
    ~static_array_class();
};
#endif

Ответы [ 2 ]

2 голосов
/ 22 августа 2011

Я думаю, что вам нужно в файле реализации:

    static_array_class::static_array_class()
    {
    }
    static_array_class::~static_array_class(){}

    int static_array_class::array[3] = {0,1,2};

Объяснение сообщения об ошибке

"не может преобразовать 'заключенный в скобки список инициализаторов' в 'int«в назначении»

в представленном коде.

Это потому, что код:

static_array_class::array[3] = {0,1,2};

интерпретируется как означающий, что {0,1,2} должен быть присвоен элементу 3 в массиве.Элемент 3 имеет тип int (и, кстати, не является четвертым элементом), поэтому он выглядит так:

int i = 0;
i = {0,1,2};

Отсюда и сообщение об ошибке.

2 голосов
/ 22 августа 2011

Они не одного типа;

Ваш класс - это класс, который включает в себя массив, а остальные - просто массив.

Со статическим определением члена класса вынеобходимо объявить фактический экземпляр вне класса, как и в случае любой другой статической функции,

int static_array_class::array[3] = {0,1,2}; // note this line is outside the constructor

static_array_class::static_array_class()
{
}
static_array_class::~static_array_class(){}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...