草庐IT

args_from_interpreter_flags

全部标签

c++ - 在 Constructor works 中将临时变量传递给引用 arg。但不是一般的功能。为什么?

这个问题在这里已经有了答案:Defaultconstructorwithemptybrackets(9个回答)关闭7年前。考虑以下代码。在这里,即使构造函数是A(B&b),Aa(B())也会编译;但是print(B())不起作用。但是print也被声明为print(B&b);为什么会出现这种不一致?#includeusingnamespacestd;classB{public:charb;};classA{public:Bb;A(B&b);A(){}};A::A(B&b){this->b=b;}voidprint(B&b){}intmain(){print(B());Aa(B());}

c++ - 当基类和派生类都继承自 boost::enable_shared_from_this 时出现错误的弱指针

我有一个派生自boost::enable_shared_from_this的基类,然后是另一个派生自基类和boost::enable_shared_from_this的类:#include#includeusingnamespaceboost;classA:publicenable_shared_from_this{};classB:publicA,publicenable_shared_from_this{public:usingenable_shared_from_this::shared_from_this;};intmain(){shared_ptrb=shared_ptr(n

c++ - 函数指针 : is the simple canonical use bad from a performance point of view? 如果是的话,c++11-ish 的替代方案是什么?

我在我的c++代码中经常使用函数指针,总是以符合这个简单规范示例的方式使用(例如,函数具有相同的I/O,但所需的操作只是在运行时已知):#includeusingnamespacestd;intadd(intfirst,intsecond){returnfirst+second;}intsubtract(intfirst,intsecond){returnfirst-second;}intoperation(intfirst,intsecond,int(*functocall)(int,int)){return(*functocall)(first,second);}intmain()

c++ - 警告 C4244 : 'argument' : conversion from 'SIZE_T' to 'DWORD' , 可能丢失数据

我需要在我的代码中有一组重载函数,但我得到了转换wanrings。这是一个测试代码:#includewindows.hvoidf(DWORDarg){...}//voidf(SIZE_Targ){}voidmain(void){DWORDdword=0;SIZE_Tsize_t=dword;f(size_t);}编译器给出警告:test.cpp(11):warningC4244:'argument':conversionfrom'SIZE_T'to'DWORD',possiblelossofdata如果我取消注释voidf(SIZE_Targ)我得到test.cpp(5):errorC

c++ - 尝试理解 std::enable_shared_from_this<T> 但使用它会导致 bad_weak_ptr

我试图理解std::enable_shared_from_this类的行为,但我无法理解。所以我写了一个简单的程序来测试不同的情况。问题谁能解释一下下面代码的行为,因为我无法解释观察到的结果。谢谢你的帮助。代码#include#includestructC:std::enable_shared_from_this{};intmain(){{//test1std::shared_ptrfoo,bar;foo=std::make_shared();bar=foo->shared_from_this();//okstd::coutfoo=std::shared_ptr(newC);std::

c++: 函数 arg char** 与 char*[] 不同

我正在使用g++。我正在使用具有main(int,char**)的代码,重命名以便我可以调用它。我看了ShouldIusechar**argvorchar*argv[]inC?,其中char**相当于char*[]。这在c++函数调用中似乎并非如此。例如:voidf1(char**p){;}voidf2(char*p[]){f1(p);//...`}失败,编译器提示“无法将char(*)[]转换为char**...”调用的指针,但情况似乎并非如此:voidf3(char*[]p);charcaa[16][16];f3(caa);也失败了。我曾假设只要间接级别相同(例如char***pt

c - 我怎样才能与 C 预处理器连接两次并扩展一个宏,如 "arg ## _ ## MACRO"?

我正在尝试编写一个程序,其中一些函数的名称取决于某个宏变量的值,宏变量如下:#defineVARIABLE3#defineNAME(fun)fun##_##VARIABLEintNAME(some_function)(inta);不幸的是,宏NAME()把它变成了intsome_function_VARIABLE(inta);而不是intsome_function_3(inta);所以这显然是错误的做法。幸运的是,VARIABLE的不同可能值的数量很少,所以我可以简单地执行#ifVARIABLE==n并分别列出所有情况,但是有没有聪明的方法来做到这一点? 最

c++ - 即使在 std::shared_ptr 拥有之后,shared_from_this 还是空的 _M_weak_this

我在A中存储了一个类(我们称它为std::vector)使用C++智能指针(因此vector签名为std::vector>)。#include#include#includeclassA:std::enable_shared_from_this{public:voiddoWork();std::shared_ptrgetSharedRef();};voidA::doWork(){std::coutA::getSharedRef(){returnshared_from_this();}classAManager{staticstd::vector>aList;public:staticv

c++ - 计时代码 "C2440: ' <function-style-cast >' : cannot convert from ' _CR' to 'std::chrono::milliseconds' 中的一个奇怪错误

我偶然发现了一个奇怪的错误C2440:'':cannotconvertfrom'_CR'to'std::chrono::milliseconds'基本上相当于HowardHinnant'sanotherquestion中的代码.这应该在VisualStudio2012RC上编译吗?这个问题的原因是什么?修复或解决方法如何?我的目标只是创建一个简单的计时器(没什么太严肃的),所以如果存在这种效果,将采取点-以及其他实现线索。问题代码如下。用法:timers::stopwatchw;w.start();std::cout并且头文件是(为简洁起见省略了实现)namespacetimers{c

docker:Error response from daemon: driver failed programming external connectivity on endpoint mysql

在linux系统中运行docker容器中MySQL镜像中遇到了一些问题出现了如下报错:无法运行MySQL镜像,大概意思是来自守护进程的错误响应:驱动程序在端点mysql上编程外部连接失败(57f1ceb50a49feb0f5b187889af36633dff7aef9c58a29bd8a0c21d98ae5a427):启动userland代理时出错:侦听tcp40.0.0.0:3306:绑定:地址已在使用,就是端口号被占用了,所以我们需要结束这个进程。我们直接利用pkill-9MySQL命令结束掉进程,然后重新启动就可以了然后我们重新进一下容器镜像试一下,没有问题可以正常启动