我是一名学生,正在尝试编写和运行一些测试代码来检查作业是否正确。现在我正在尝试测试我的代码是否正确地防止值语义。在我的作业中,对于每个类,我声明了它自己的私有复制构造函数和赋值运算符,但没有定义,因此什么也不做。当它们在我的测试程序中被调用时,我得到了像我预期的编译错误。就像这样:
但编译器仍然给我上述错误。 这些不是“异常”吗?它们不会触发抛出吗?
如果我正确理解try/catch,它处理运行时错误,而不是我之前遇到的那种错误,对吗?
经过更多研究,似乎没有(简单的)方法在C++中本地测试某些编译错误(现在我想想,这可能适用于大多数语言)。 我读了一个post,建议使用脚本语言编写一些测试代码,尝试编译C++代码片段并检查任何错误,另一个post则建议使用Boost.Build。
做我正在努力做的事情的最简单/最好方法是什么?
我查看了Boost.Build的文档,但有点超出我的理解范围。 如果我使用它,我该如何测试一个文件,比如'test.cpp'编译,并处理发生在'test.cpp'的特定编译错误?
谢谢你的帮助!
是否有一种方法可以使用try/catch,使我的测试代码能够编译和运行,但显示这些错误确实发生了吗?我已经尝试过:error: 'myClass::myClass(const &myClass)' is private'
error: 'myClass& myClass::operator=(const myClass&)' is private
myClass obj1(...);
myClass obj2(...);
try{
obj1 = obj2;
throw 1;
}
catch(int e){
assert(e==1);
}
但编译器仍然给我上述错误。 这些不是“异常”吗?它们不会触发抛出吗?
如果我正确理解try/catch,它处理运行时错误,而不是我之前遇到的那种错误,对吗?
经过更多研究,似乎没有(简单的)方法在C++中本地测试某些编译错误(现在我想想,这可能适用于大多数语言)。 我读了一个post,建议使用脚本语言编写一些测试代码,尝试编译C++代码片段并检查任何错误,另一个post则建议使用Boost.Build。
做我正在努力做的事情的最简单/最好方法是什么?
我查看了Boost.Build的文档,但有点超出我的理解范围。 如果我使用它,我该如何测试一个文件,比如'test.cpp'编译,并处理发生在'test.cpp'的特定编译错误?
谢谢你的帮助!
附言:这是我发布的第一篇文章之一,希望我已经做了“足够”的研究并且做好了其他所有的事情。如果我没有做到,请原谅。