Пытаясь создать конструктор копирования, как я могу решить эту проблему? - PullRequest
0 голосов
/ 14 ноября 2018

Я сделал конструктор копирования, и я пытаюсь инициализировать буфер того же размера, но я получаю сообщение об ошибке. Я ожидаю, что контейнер будет создан с тем же размером rhs с помощью функции size () в классе.

int_buffer::int_buffer(const int_buffer& rhs): ptr_begin(new int[rhs.size()]){
    std::cout << "Copy Constructor running..." << '\n';
    std::copy(rhs.begin(), rhs.end(), begin());
}

размер

size_t int_buffer::size(){
    return ptr_end - ptr_begin;
}

Я получаю ошибку: Объект имеет спецификаторы типа, которые не совместимы с функцией-членом тип объекта int_buffer :: size: const int_buffer.

РЕШЕНИЕ

size_t int_buffer::size() const{
    return ptr_end - ptr_begin;
}

Решением моей проблемы было то, что моя функция размера не была константой.

1 Ответ

0 голосов
/ 14 ноября 2018

Похоже, ваш int_buffer::size метод не является постоянным. У него должна быть подпись типа

std::size_t int_buffer::size() const;

Причина в том, что вы передаете const int_buffer& rhs, поэтому вы не можете вызывать неконстантные методы для этого объекта.

...