Возвращаемое значение конструктора - PullRequest
0 голосов
/ 05 апреля 2010

Не могли бы вы сказать мне, что не так с моим конструктором класса? Код:

CVector::CVector (int size_)
{
    if (size_ > 0)
    {
        this->size = size_;
        this->data = new double[size];
        for (int i = 0; i < size; i++)
        { 
            (*this)(i) = i;
        }
     }
     cout << "constructor end" << endl;
     return;
}

Пример использования:

tvector = CVector(6);

Я получаю нарушение прав доступа после вывода "constructor end".

Обновление : Вызов конструктора был неверным. Использование

CVector tvector(6); работал.

Ответы [ 4 ]

6 голосов
/ 05 апреля 2010

Я думаю, что вы хотите: this->data[i] = i;

2 голосов
/ 05 апреля 2010

Я собираюсь предположить, что вы не добавили конструктор копирования, а деструктор освобождает некоторую память, которую вы случайно топали другим кодом.

1 голос
/ 05 апреля 2010

Вам не нужен оператор return в конце тела конструктора.

Конструкторы возвращают значение, но это более подробное объяснение в другой раз.

0 голосов
/ 05 апреля 2010

Я предполагаю, что под

(*this)(i) = i;

вы действительно имели в виду

this->data[i] = i;

Верно?

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