Обновить
0
Musikuma@Dacad

C++ developer as hobby

Отправить сообщение
void foo(B *b, size_t size)
{
    for(auto &&el : std::span(b, size)) {
        std::cout << el.i << std::endl;
    }
}

Проблема этого когда не в том, что массив конвертируется в указатель, а то, что тут подразумевается массив на значения B, а не ссылки/указатели. Соответственно код даже знать не может о наследниках и по факту обрежет значения. Массивы на базовый класс передаются как B **b - аналог B *b[].

Для таких случаев ещё есть способ с преобразованием исключения реализации в исключение абстракции. Т.е. вместо выбрасывания наружу SqlException нужно преобразовать его во что-то вроде RepositoryException стерев тем самым данные о внутренней реализации и в тестах проверять уже исключение абстракции

Почему при обработке Вас интересует именно полное отсутствие аргументов, а не их достаточное количество?

Вы предпочитаете уронить приложение путём возврата кода возврата, нежели обрабатывать исключения? К тому же вывод ошибок в stdout вместо stderr.

Выделение класса Connection, конечно хорошо, но пихать туда почти всю логику явно перебор. Стоило разбить сущности.

Информация

В рейтинге
Не участвует
Дата рождения
Зарегистрирован
Активность

Специализация

Специалист
SQL
Linux
C++
C++ stl
C
Qt
Cmake
Git
Базы данных
C#