草庐IT

c++ - 通过引用传递动态变量的指针

我正在尝试创建动态变量并在new_test函数中通过引用传递其地址,但它不起作用。我做错了什么?代码:#includeusingnamespacestd;structtest{inta;intb;};voidnew_test(test*ptr,inta,intb){ptr=newtest;ptr->a=a;ptr->b=b;cout 最佳答案 代码不通过引用传递指针,因此对参数ptr的更改是函数本地的,对调用者不可见。更改为:voidnew_test(test*&ptr,inta,intb)//^

c++ - 混合具有固定参数的构造函数和具有构造函数模板的构造函数

是否可以混合使用固定参数和构造函数模板的构造函数?我的代码:#includeclassTest{public:Test(std::string,int,float){std::coutTest(Tn...args){std::cout这给了我“模板构造函数!”。有没有办法调用我的普通构造函数? 最佳答案 当然,在两个同样好的匹配的情况下,非模板是首选:Testt(std::string("Hello"),42,0.07f); 关于c++-混合具有固定参数的构造函数和具有构造函数模板的构造

c++ - 为什么这些变量的地址打印为 ab@ 和 b@?

我运行以下代码:#includeusingnamespacestd;typedefstructTest{chara;charb;inti;doubled;}Test;intmain(){Testtest;test.a='a';test.b='b';test.i=478;test.d=4.7;cout输出是:ab@b@0x28fe940x28fe98起初,我认为这是&和之间的优先级的结果。。但是0x28fe94和0x28fe94说明不是优先级的问题。我能弄清楚ab@和b@是什么意思? 最佳答案 当你写作时cout因为test.a是ch

c++ - gtest,对 'testing::Test::~Test()' 的 undefined reference ,testing::Test::Test()

我使用apt-getinstalllibgtest-dev安装了gtest我正在尝试检查它是否有效。所以我在eclipse中编写了简单的测试代码。但是有错误,undefinedreferenceto'testing::Test::~Test()'undefinedreferenceto'testing::Test::Test()'相反,如果我将ATest类的继承更改为protected,错误就会消失,但是出现其他错误testing::Testisinaccessiblebaseof'ATest_AAA_Test'怎么了?#include#includeclassA{public:int

c++ - 错误:使用已删除的函数'test::test (const test&) C++ 结合 vector

我有一个我不明白的问题。我有一个生成线程的类。一切都好。我制作了一个新对象-一切正常。如果我将这些存储在一个vector中以迭代我的代码将无法编译。我使用g++4.9i686。我制作了以下简短程序,它完全模拟了问题,因为真实代码相当广泛。如果有人可以澄清或给我一个对我的宠物项目非常有用的解决方案,因为我坚持这个。代码如下:#include#include#include#includeclasstest{public:test();voidsetstring(std::strings);~test(){}voidrunThread(){m_thread=std::thread(&tes

c++ - 为什么递归模板的 decltype 返回类型失败,而返回类型推导工作得很好?

在处理C++11类型集时,我尝试实现此功能(精简到最低限度):constexprautotest()->bool;templateconstexprautotest()->decltype(test()){return{};}gcc和clang都因此而窒息。clang说:test.cpp:54:40:error:'Rest'doesnotrefertoavalueconstexprautotest()->decltype(test())^gcc提示:test.cpp:54:44:error:expectedprimary-expressionbefore‘...’tokenconste

c++ - 理解和使用复制赋值构造函数

我想了解复制赋值构造函数在C++中的工作原理。我只用过java,所以我真的不在我的水域里。我已经阅读并看到返回引用是一个很好的做法,但我不知道我应该怎么做。我写了这个小程序来测试这个概念:主要.cpp:#include#include"test.h"usingnamespacestd;intmain(){Testt1,t2;t1.setAge(10);t1.setId('a');t2.setAge(20);t2.setId('b');cout测试.h:classTest{intage;charid;public:Test(){};Test(constTest&t);//copyTest

c++ - dynamic_cast<> 将变量参数传递给模板

我有一个执行测试用例的C++应用程序。某些测试用例可能会依赖于其他测试用例的输出。所有测试用例都实现一个基本接口(interface):///baseclassforalltestcasesclassITest{public:virtualvoidExecute()=0;};产生一些可能对其他测试用例有用的对象的测试用例实现这个接口(interface):///implementedbytestcasesthatprovidedatatoothertestcasestemplateclassIDependency{public:virtualObjGet()=0;};需要来自其他测试用

c++ - C++中对象的动态内存分配

我正在尝试为一个非常简单的C++程序中的对象动态分配(它不像现在那样动态,但最终会动态分配)内存。我是新来的类(class),最近才开始玩C++,把C抛在了后面。这是代码:#includeusingnamespacestd;classTest{private:inti;public:Test(int);~Test();voidprint();};Test::Test(intii){i=ii;}Test::~Test(){i=0;coutprint();//thisworksaswellfor(inti=0;iprint();/*thisshowsthatthevalueofi=1..s

c++ - 通过 C++ 中的新检查返回指针

检查新运算符返回的指针的最佳方法是什么我看到以下类型的代码。假设我有classTest类型1Test*ptr=newTest;if(ptr==NULL){}类型2Test*ptr=newTest;if(!ptr){}类型3Test*ptr=newTest;if(ptr==(Test*)0){} 最佳答案 您不检查new是否为null它会抛出异常std::bad_alloc以防失败。所以你处理异常。当然,如果您没有使用new的nothrow版本,则上述规则适用。try{Test*ptr=newTest;}catch(std::bad_