草庐IT

this-page

全部标签

c++ - std::this_thread::sleep_for sleep 时间比 VS2015 中的预期短

让我们有以下一段代码,它简单地测量以20毫秒调用的std::this_thread::sleep_for的持续时间:#include#include#includeusingnamespacestd;usingnamespacestd::chrono;intmain(){for(inti=0;ielapsed=end-start;cout当使用工具集v120(VS2013)编译运行时,我得到了预期的结果,即:Waited20.0026msWaited20.0025msWaited20.0025msWaited20.0026msWaited20.0025msWaited20.0025ms

c++ - 使用 boost::enable_shared_from_this 时出现不完整的类型错误

在下一行classSymbol:publicboost::enable_shared_from_this{我得到错误:错误:不完整类型的无效使用structboost::enable_shared_from_this/usr/include/boost/smart_ptr/shared_ptr.hpp:63:错误:声明structboost::enable_shared_from_this知道为什么我会收到此错误。Symbol是一个抽象类(如果重要的话) 最佳答案 哎呀。错误是因为我没有包含定义enable_shared_from_

c++ - 如何在 lambda 的 lambda 函数中捕获 "this"?

这个问题在这里已经有了答案:WhyamIfailingtocapturethe"this"pointerbyalambda?(2个答案)关闭9年前。例如classA{voidf(){}voidg(){[this]()//Lambdacapturethis{f();A*p=this;[p]()//Workaroundtoletinnerlambdacapturethis{p->f();};};}};有什么更好的方法可以在内部lambda中捕获它?

c++ - enable_shared_from_this 的双重继承

我有一个对象(Z),它派生自另外两个对象(A和B)。A和B都派生自enable_shared_from_this,分别enable_shared_from_this和enable_shared_from_this.我当然会调用shared_from_this()在Z上。当然,编译器将其报告为不明确。我的问题是:从enable_shared_from_this继承两次是否安全?或者它会创建两个独立的引用计数(不好!)如果不安全,我该如何解决?注意:我发现了另一个问题badweakpointerwhenbaseandderivedclassbothinheritfromboost::ena

c++ - 虚拟成员函数中的 `delete this` 是安全的吗?

我已经知道某些形式的“自杀”是安全的(被认为是合法的),但是,在虚拟成员函数中执行deletethis是否特别安全?请注意,“安全”是指编译器生成的“代码”是否能够处理该构造。注意,我对这样做的利弊不感兴趣,我只是考虑是否安全。附带问题:语言标准是否明确或隐含地要求实现支持任何形式的deletethis习语?我不认为这是Isdeletethisallowed?的拷贝.我的问题是在虚拟成员函数中这样做是否安全。下面是我想做的事情的概述classFooBase{protected:virtualvoidon_idle(){/*no-opbydefault*/}};classFoo:publ

c++ - 你能解释一下this指针的概念吗?

很难说出这里要问什么。这个问题模棱两可、含糊不清、不完整、过于宽泛或夸夸其谈,无法以目前的形式得到合理的回答。如需帮助澄清此问题以便重新打开,visitthehelpcenter.关闭11年前。我需要理解this指针的概念,最好有一个例子。我是C++的新手,所以请使用简单的语言,以便我更好地理解它。

c++ - 'yield' 不是 'std::this_thread' 的成员

我试图让出当前线程:std::this_thread::yield();但不幸的是,GCC知道得更多:'yield'isnotamemberof'std::this_thread'我是否忘记了一些类似于D_GLIBCXX_USE_NANOSLEEP的hack,或者什么? 最佳答案 是的,这似乎是一个类似于_GLIBCXX_USE_NANOSLEEP的问题。GCC根据宏_GLIBCXX_USE_SCHED_YIELD有条件编译yield。如果您定义它,它应该可以编译。这将在GCC4.8中修复。

c++ - 当基类不是多态但派生时 'this' 地址不匹配

有这段代码:#includeclassBase{public:Base(){std::cout输出:Base:0xbfdb81d4Derived:0xbfdb81d4然而,当函数“fun”在派生类中更改为虚拟函数时:virtualvoidfun(){}//changedinDerived然后'this'的地址在两个构造函数中是不一样的:Base:0xbf93d6a4Derived:0xbf93d6a0另一件事是如果类Base是多态的,例如我在那里添加了一些其他虚函数:virtualvoidfunOther(){}//addedtoBase然后“this”的地址再次匹配:Base:0xb

c++ - C++中的字符串分配 : why does this work?

这个问题在这里已经有了答案:Canalocalvariable'smemorybeaccessedoutsideitsscope?(20个答案)关闭6年前。voidchangeString(constchar*&s){std::stringstr(s);str.replace(0,5,"Howdy");s=str.c_str();}intmain(){constchar*s="Hello,world!";changeString(s);std::cout当我运行这段代码时,它会打印出“Howdy,world!”我认为str在changeString退出时被销毁。我是否遗漏了std::s

c++ - 在没有 const_cast 的情况下修改 *this 的 const 方法

我正在编写的程序中出现了以下模式。我希望它不是太做作,但它设法改变了Fooconst方法中的对象Foo::Questionable()const,不使用任何const_cast或类似的。基本上,Foo存储对FooOwner的引用反之亦然,在Questionable(),Foo设法通过调用mutate_foo()在const方法中修改自身在它的主人身上。问题遵循代码。#include"stdafx.h"#includeusingnamespacestd;classFooOwner;classFoo{FooOwner&owner;intdata;public:Foo(FooOwner&ow