草庐IT

c++ - 如何使用模板函数作为 Boost::Unit-test 的自定义谓词

我正在尝试为BOOST_CHECK_PREDICATE构建自定义谓词,其中谓词本身是一个模板函数。我的示例如下所示:#defineBOOST_TEST_MODULEModule#defineBOOST_TEST_MAIN#include//custompredicatetemplateboolis_close_enough(constU&a,constV&b){returnstd::abs(a-b)使用MSVisualC++2010编译会出现以下错误:3>..\boost_test\testSystem.cpp(42):errorC2780:'boolboost::test_tools

c++ - 测试 C++ 代码 : Using test libraries

我学习C++有一段时间了,但这是我第一次接触C++项目(宠物配置解析器库)。我正在使用GoogleC++TestingFramework来测试这个。但我不知道我这样做是否正确。目前,我已经剥离了这个Google测试库的一些部分并将其放入我的项目Test/googletest目录中。它工作正常,但我想知道我是否应该这样做。我在我的项目中包含了测试框架的源代码,它将与我的代码一起发布。这让我感到不舒服。我浏览了someC++projectsonGitHub,试图看看其他人如何处理这个问题。有些有自定义框架,大多数根本不测试代码就解决了整个问题。我想知道我是否做对了,或者我怎样才能采用一种测

c++ - 在 GMP 中使用载体

我正在尝试将载体与GMP结合使用。但是当我编译这样的东西时,我得到“[...]\bits\vector.tcc[Error]arraymustbeinitializedwithabrace-enclosedinitializer”。任何具有动态大小的数据结构都可以工作——双端队列是最好的,但当我尝试这样做时,我弹出了更多的错误。如何使此停止失败?#include#includeintmain(){mpz_ttest;mpz_init(test);std::vectora_vector;a_vector.push_back(test);return0;} 最佳

c++ - 如何通过命令行运行 Google Test?

我有一个启动并运行GoogleTest的示例项目。我有一个简单的测试类,如下所示:#includeTEST(FirstTest,TestNumberOne){EXPECT_NE(2,1);}这是在我电脑上的目录/home/dave/Desktop/sandbox/black-test/src/code/Tester.cpp我在使用Ubuntu的Eclipse中工作。测试类在Eclipse中运行良好(右键单击,以C++运行)。但是我找不到关于如何通过命令提示符运行的文档?其次,大多数为C++进行单元测试的人是将他们的测试项目与生产代码分开还是耦合(就像大多数Java项目一样)?

c++ - 调用构造函数之前是否初始化了静态成员?

我有一个带有std::map静态成员的类。我在执行构造函数体之前在同一个翻译单元(同一个cpp文件)中初始化它。我的程序没有输出就失败了。我发现了称为静态初始化顺序失败的问题,但我认为情况并非如此。classTest{public:staticstd::mapa;Test(std::stringID){/*inmycompletecode(whereconstructor*implementationandmapinitialization*areinaseparateTest.cppfile),thisfails,maybe*becausethemapisnotinitialized

c++ - GCC Address Sanitizer - 将库函数列入黑名单(特别是 boost::test)

我所有的单元测试代码都基于boost::test。我刚刚尝试了GCCAddresssanitizer,它报告了boost::test的一些问题:==25309==ERROR:AddressSanitizer:heap-use-after-freeonaddress0xf5801344atpc0x8259412bp0xff9966c8sp0xff9966bcREADofsize4at0xf5801344threadT0#00x8259411inboost::unit_test::framework::run(unsignedlong,bool)../common/lib/boost/bo

c++ - 编译包装器时出现 SWIG [C++ to Lisp(CFFI)] 错误

我是C++和Lisp与SWIG之间接口(interface)的初学者。我遵循了SWIG的文档,但遇到了问题。这是我想要接口(interface)的简单程序(它可以很容易地在Lisp中完成,但它是为了了解如何将C++代码导入Lisp):测试.cpp:#include"test.hpp"inttest(intx,inty){std::cout测试.hpp:#includeinttest(intx,inty);为了使用SWIG,我创建了接口(interface)文件:测试.i:%moduletest%include然后,我执行了以下命令行:$swig-c++-cffitest.i$c++-c

c++ - 单元测试项目的物理布局是什么?

目前,我正在学习单元测试,我想将测试集成到我当前的(10个OpenGL实验文件)项目中。为此,我下载了Boost.Test,虽然我可以弄清楚它如何在单个文件样本上工作,但我不知道如何将它集成到我的项目中(我想使用静态链接版本)。是否测试与应用程序本身不同的二进制文件?(如果它是一个二进制文件,如何运行它?)我应该为每个测试类创建一个测试文件吗?我的CMakeLists应该改变多少才能反射(reflect)这种集成?是否可以将测试与应用程序分离,以便我可以在未安装boost的平台上构建我的应用程序?我知道我有很多问题,但简单地说:Boost.Test在现实生活中如何使用?

c++ - 这是一种击败省略以保持 dtor 副作用的方法吗?

我想确保析构函数的副作用保留在作为RVO候选者的函数中。我的目标是在进入和退出时对堆栈进行快照,并显示预期的堆栈变量。这段代码似乎适用于C++11而无需使用特定于编译器的选项,但我不知道如何在不添加虚假的Test实例以创建多个返回路径的情况下在早期版本中执行此操作。是否有一些技术,它是否总是适用于c++11?classTest{public:intm_i;Test(){m_i=0;coutm_i=arg.m_i;cout 最佳答案 std::move不是魔法,它只是一个返回对其参数的引用的函数,因此您应该能够在任何版本的C++中执行

c++ - "Incomplete"对象实例化和输出行为

下面的代码究竟是如何工作的?#includetemplateTx=T{};voidfoo(){classTest{public:Test(){std::printf("Test::Test\n");}};Testt=x;}intmain(){std::printf("main\n");}输出Test::TestmainLiveexample为什么打印Test::Test首先代替main?它依赖于哪个标准?它只是C++1z吗?我找不到相关的提案。你能给我一个链接吗?什么是x在此代码中以及如何Testt=x作业真的有用吗?此外,如果我改变std::printf调用std::cout整个程序