Я студент, и я пытаюсь написать и запустить некоторый тестовый код для назначения, чтобы проверить его, прежде чем включить его. Сейчас я пытаюсь проверить, что мой код правильно предотвращает семантику значений,В своем назначении я объявил для каждого из своих классов свой собственный приватный конструктор копирования и оператор присваивания, которые не имеют определения и поэтому ничего не делают.Когда они вызываются в моей тестовой программе, я получаю ошибки компиляции, как я и ожидал.Примерно так:
ошибка: 'myClass :: myClass (const & myClass)' закрыта '
ошибка:' myClass & myClass :: operator = (const myClass &) 'закрыта
Есть ли способ использовать try / catch, чтобы мой тестовый код компилировался и выполнялся, но покажите мне, что эти ошибки произошли?Я пробовал:
myClass obj1(...);
myClass obj2(...);
try{
obj1 = obj2;
throw 1;
}
catch(int e){
assert(e==1);
}
, но компилятор все еще выдает мне вышеуказанные ошибки.Разве это не «исключения»?Разве они не вызовут бросок?
Если я правильно понимаю try / catch, он обрабатывает ошибки времени выполнения, а не те ошибки, которые я получал выше, верно?
После проведения дополнительных исследований кажется, что нет(простой) способ тестирования некоторых ошибок компиляции изначально в C ++ (это может быть верно для большинства языков, теперь, когда я думаю об этом).Я прочитал публикацию , в которой предлагается написание некоторого тестового кода на языке сценариев, который пытается скомпилировать фрагменты кода C ++ и проверять наличие ошибок, и еще одну публикацию , которая рекомендует использовать Boost.Build.
Какой самый простой / лучший способ сделать то, что я пытаюсь сделать?
Я посмотрел документацию для Boost.Build, и это немного над моей головой.Если бы я использовал его, как бы я протестировал этот файл, скажем, «test.cpp», скомпилировал, и, возможно, обработал бы определенные ошибки компиляции, которые происходят с «test.cpp»? *
Спасибо за вашу помощь!
PS Это один из моих первых постов, надеюсь, я провел «достаточно» исследование и сделал все остальное правильно.Извините, если я не сделал.