草庐IT

c++ - 将结构转换为 char* 并返回

我正在尝试将我的结构转换为char*,然后再转换回结构。但我想我错过了一些东西。一旦返回到结构体,结构体只有一个属性是正确的。其余的都是错误的。这是我的代码。#includeusingnamespacestd;structINFO{unsignedchara;intb;intc;charg[121];}inf;intmain(){charframe[128];INFOtest1=INFO();test1.a='y';test1.b=4000;test1.c=9000;strcpy(test1.g,"GoodbyeWorld");sprintf(frame,(char*)&test1);

c++ - Boost::Test:编译并运行一个 "hello world"程序

我正在尝试运行一个虚拟的Boost.test“helloworld”程序。我找到了文档here和there但显然我缺少了一些东西......这是我所做的:第1步:我安装了依赖项sudoaptitudeinstalllibboost-test-dev它安装头文件(libboost-test1.54-dev)和二进制文件(libboost-test1.54.0)。第二步:创建要编译的源文件我有一个名为test.cpp的文件,其中包含:#defineBOOST_TEST_MODULEconst_stringtest#include//EOF正如officialtutorial中所推荐的那样第

c++ - 如何使用 Google Test 捕获段错误?

如何测试函数不会产生段错误?这是我现在知道的,我可以做的:EXPECT_DEATH(foo(nullParameter))在函数旁边,产生了一个段错误,这是我想让它失败的行为。上面的代码片段将使测试通过,因为这是预期的,进程的死亡。现在,我怎样才能让它失败? 最佳答案 这是一个函数,如果传递了一个空指针参数,就会出现段错误,否则不是:intderef(int*pint){return*pint;}这是一个测试该行为的googletest程序:main.cpp#includeintderef(int*pint){return*pint

c++ - 如何将可变参数模板成员函数的参数存储到 vector 中?

#include#include#include#includeusingnamespacestd;classCTest{public:templatevoidAddStringsToVector(conststd::string&First,Args&...args);private:std::vectorm_stringsvec;};templatevoidCTest::AddStringsToVector(conststd::string&First,Args&...args){m_stringsvec.push_back(First);m_stringsvec.push_bac

C++ TS 概念和访问器

我想使用ConceptsTS来帮助我进行数据约束。我将讨论p0121r0中讨论的概念,并且我使用GCC6.2进行测试。以这段简单的代码为例:templateconceptbooltest_is_available=requires(Tt){t.test;{t.test++};{t.test--};};templatestructTester{Tt;};我必须向structTester传递一个具有test属性的类型,它是可递增和可递减的。好。structA{unsignedtest;}Testera;按预期工作。显然,下面的方法是行不通的:structB{std::stringtest;

c++ - Eclipse 与 qt 集成

我用c++cdt下载qt和eclipse,我看到qt带有qtide(qtcreator),用于开发qt应用程序,那很好,但我想用eclipse做这个,我的意思是使用c++代码和qtinsideeclipse。有没有?因为我正在尝试使用qt来设计我的用户界面,并使用其他库中的其他代码来做其他事情。我尝试包含头文件(usr/include/qt4),但是当我编译程序时我仍然遇到问题,例如我们(找不到qgui.h)任何帮助将qt与eclipse集成,如netbeans。编辑:这是我的输出13:48:48****IncrementalBuildofconfigurationDebugforpr

c++ - 不完整类型的无效使用 (SFINAE)

我正在尝试在模板化结构中使用一些SFINAE。我将我的问题简化为以下内容并且可以完成这项工作:templatestructtest{voidmyfunc();};templatevoidtest::myfunc(){std::coutvoidtest::myfunc(){std::coutfoo;testbar;foo.myfunc();bar.myfunc();}使用这段代码,我得到了结果:testtruetestfalse但是,如果我想考虑我的structtest有多个模板参数,我尝试像这样调整上面的内容:templatestructtest{voidmyfunc();};temp

c++ - 使用不同的类类型重复 Boost 单元测试

我有两个类共享完全相同的API和功能(它们包装不同的第3方API以提供相同的功能)。这两个类不有共同的基类/接口(interface)。我对其中一个进行了boost单元测试,并想在另一个上运行完全相同的测试,但现在我只知道如何复制粘贴测试并查找/替换类名。除了在两个地方更新测试很烦人之外,这还意味着不能保证两个类的测试是相同的。有什么方法可以“模板化”测试用例吗?如果没有,你会如何解决这个问题?到目前为止我能想到的是类似的东西(请原谅伪代码):templatevoidrunTests(){Tt;//dotestshere}BOOST_AUTO_TEST_CASE(test_X){run

c++ - C++中set的erase函数会改变其他元素的地址吗?

我有以下代码:settest;test.insert(key1);test.insert(key2);iter1=test.find(key1);iter2=test.find(key2);test.erase(iter1);我的问题是,如果key1被删除了,现在测试中是否可以用iter2引用key2?谢谢 最佳答案 是的,set的erase只会使指向被删除元素的迭代器无效(注意,这不一定适用于所有容器)。 关于c++-C++中set的erase函数会改变其他元素的地址吗?,我们在Sta

c++ - 在单元测试文件 : 的 Makefile 中包含 gtest 库

我目前正在学习如何为C++程序制作和使用MakeFile。我已经能够为普通的.cpp类创建和运行Makefile,但我遇到了测试类的问题。为了进行测试,我在Code::Blocks中使用Gtest,并在“链接器设置”的Test_A.cpp文件中添加:/usr/lib/libgtest.a/usr/lib/libgtest_main.a对于其他链接器选项,我输入了“-pthread”。我知道以某种方式需要将这些库添加到makefile中,但我不知道如何添加。我最初认为它们需要添加到第3行,但我尝试的所有操作都返回了数千行错误类型:undefinedreferenceto`testing: