Помогите ,пожалуйста, реализовать близкую реализацию функции at()
. У меня существует класс для хранения массива типа char
и мне нужно реализовать at()
. Понял, что настоящий at()
ловит исключения. Именно с этим я и не могу справиться, помогите пожалуйста.
Код:
#pragma once
#include <iostream>
const int LIMIT = 100;
class TCharArray
{
private:
char element[LIMIT];
public:
TCharArray();
~TCharArray();
char& at(int n)
{
if (n < 0 || n >= LIMIT)
{
std::cout << "Error index!";
exit(1);
}
return element[n];
}
};
Не имеет смысла объявлять параметр функции at
, как имеющий знаковый целочисленный тип.
"Настоящая" функция at
не "ловит" исключения, а выбрасывает исключение, если указанный индекс выходит за пределы допустимого диапазона индексов.
Также лучше объявить константу LIMIT
как член класса, так как это является характеристикой класса. Вы можете написать отдельную функцию-член класса, которая будет возвращать значение этой константы, как, например, max_length
или capacity
.
В вашем классе функция at
может быть реализована, как показано ниже
#include <iostream>
#include <algorithm>
#include <stdexcept>
class TCharArray
{
private:
static const size_t LIMIT = 100;
char element[LIMIT];
public:
TCharArray()
{
std::fill( element, element + LIMIT, char() );
}
const char & at( size_t n ) const
{
if ( n >= LIMIT ) throw std::out_of_range( "Invalid index" );
return element[n];
}
char & at( size_t n )
{
if ( n >= LIMIT ) throw std::out_of_range( "Invalid index" );
return element[n];
}
};
int main()
{
TCharArray s;
try
{
s.at( 100 ) = 'A';
}
catch ( std::exception &e )
{
std::cout << e.what() << std::endl;
}
}
Вывод программы на консоль:
Invalid index
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Перевод документов на английский язык: Важность и ключевые аспекты
Мне необходимо скомпилировать и запустить простейший код на C++ под ARMПытаюсь сделать:
При вызове конструктора копий указатели ссылаются на один и тот же указательИ при вызове деструктора повторное удаление указателя
Доброго времени суток! Можете привести пример тривиального хеширования? В интернете не смогла найти никакой понятной информации
Скриншот экрана хранится в буфере в виде байт RGBНужно независимо от его исходных размеров привести его к разрешению 1280х720