草庐IT

this_file

全部标签

this 的 C++ 类型

我正在用C++编写一些模板代码,我发现如果我可以确定this的类型,它会使代码更短/更好/更有用。我不想使用C++0x,因为代码要向后兼容旧的编译器。我也不想使用BOOST。我所拥有的是这样的:structMyLoop{templatevoidRun(intiterations,Contextc){MyUtility::templateWrapLoop(iterations,c);}};这可以用于一些有趣的循环优化。我不喜欢在MyUtility模板特化中使用MyLoop。使用C++0x,可以使用如下内容:structMyLoop{templatevoidRun(intiteration

c++ - 使用尽可能少的代码将非静态方法包装到带有 "this"参数绑定(bind)的 std::function

这是我正在尝试做的事情:templateclassCSignal{public:voidconnect(std::functiontarget){m_connections.emplace_back(target);}private:mutablestd::vector>m_connections;};connect非常适合静态方法或全局函数。现在,如果我想传递一个成员方法怎么办?看来这是我唯一的选择:structMyStruct{voidprint(floata,intb){std::cout如果我不必指定非常麻烦的占位符,它会适合我。所以我尝试另一种方法。我为成员方法添加了一个新的

c++ - 为什么 std::shared_ptr 的别名构造函数不初始化 std::enabled_shared_from_this?

考虑以下代码:structFoo:std::enable_shared_from_this{};structBar{Foofoo;};intmain(){std::shared_ptrbar_p(newBar);//makeshared_ptrtomemberwithaliasingconstructorstd::shared_ptrfoo_p(bar_p,&bar_p->foo);assert(bar_p->foo.shared_from_this());//fail!throwsbad_weak_ptr}不幸的是,它没有按预期工作(至少在GCC4.8.2中)。我查看了代码,似乎别名

C++ 系统不使用 "source files"

在C++编程语言(第4版)§15.1中,Stroustrup指出:Afileisthetraditionalunitofstorage(inafilesystem)andthetraditionalunitofcompilation.Therearesystemsthatdonotstore,compile,andpresentC++programstotheprogrammerassetsoffiles.遗憾的是,他没有提供更多信息。您知道此类系统的任何示例吗?编辑:我的意思是,如果您知道任何实际免费、商业、开源或其他C++实现,它们不会像我们习惯的那样处理文件。我想知道:为什么会有

c++ - 范围解析和 this 运算符

在我最近参加的(C++)类(class)中,老师提到使用->运算符比使用点符号和手动取消引用指针要慢一点(例如(*ptr)).这是真的吗?如果是,为什么?这是否也适用于C? 最佳答案 ->运算符既不比.运算符慢也不快。事实上,取消引用某些东西比仅仅访问内存位置要慢,因为还有一个间接的途径。这是生活中的一个事实,无论是在C和C++中还是在任何其他语言中。在C++中,您还有引用,因此您也可以使用.取消引用某些内容!所以这里的问题不是arrow-vs-dot,问题是编译器是否可以直接找到一个值,或者它是否必须先搜索它的地址。

c++ - 'Windows.h : No such file or directory"error when changing Platform Toolset to v140_xp

这个问题在这里已经有了答案:HowtotargetWindowsXPinMicrosoftVisualStudioC++[duplicate](2个答案)关闭4年前。我尝试为WindowsXP编译一个应用程序;正常的可执行文件给出错误:"...isnotavalidWin32application."我读到我可以通过将平台工具集更改为VisualStudio2015-WindowsXP(v140_xp)来创建与XP兼容的可执行文件,但是当我这样做然后尝试编译时,它给了我以下错误:Cannotopenincludefile:'Windows.h':Nosuchfileordirector

c++ - "gets() was not declared in this scope"错误

这个问题在这里已经有了答案:whyg++shows"gets()"notdeclared,evenafterincluding(3个答案)关闭2年前。使用以下代码,我得到“gets()未在此范围内声明”错误:#include#includeusingnamespacestd;intmain(){//stringstr[]={"Iamaboy"};stringstr[20];`gets(str);cout

c++ - 安全检查 `this` 是否为空

首先,我知道在空指针上调用方法是未定义的行为。我还知道,因为这不应该发生,所以编译器可以(并且确实)假定this始终为非空。但在实际代码中,您有时会不小心这样做。通常,它没有不良影响,当然this在方法中为null,并且可能会崩溃。作为调试辅助工具,并且本着早点崩溃的精神,我将assert(this!=0)放在我之前不小心调用空指针几次的方法中。它似乎有效,但clang提示:warning:'this'pointercannotbenullinwell-definedC++code;comparisonmaybeassumedtoalwaysevaluatetotrue[-Wtauto

c++ - return *this 在 C++ 中安全吗?

我想知道从函数返回*this是否安全。this问题显示了一些你可以做到的方法,我的问题是这个例子:structtest{stringt;stringb;public:test&A(stringtest){this->t=test;return*this;}test&B(stringtest){this->b=test;return*this;}};intmain(){autoa=test().A("a").B("b").A("newa");return0;}会不会有内存泄漏? 最佳答案 isreturn*thissafeinc++基

C++ 单例 : how good is this solution? 优点/缺点,替代方案

我正在开发一个包含多个类的C++项目,这些类必须是单例,它们之间存在依赖关系(初始化顺序很重要)。我想出了这个解决方案:所有我想成为单例的类都有protected构造函数,例如:classMySingleton1{protected:MySingleton1();}有一个源文件singleton_factory.cpp包含一个实例化类Singletons,它派生自所有我想成为单例的类,像这样:#include"MySingleton1.hpp"#include"MySingleton2.hpp"classSingletons:publicMySingleton1,publicMySin