草庐IT

C_Func_using_Func_ptr

全部标签

c++ - 错误 : Invalid use of incomplete type struct Subject; error: forward declaration of struct Subject

我继承自模板类。当我进入教师类(class)时,我想进入学科类(class),反之亦然。我收到错误InvaliduseofincompletetypestructSubect;voidaddSubject(Subject*s){this->addReference(s);s->addReference(this);whenIcommentthislinetheitcompileswithouterrors,butIcannotinsertintoSubject}我的全部代码在下面#include#include#includeusingnamespacestd;classSubject

c++ - 将 unique_ptr 插入 map ,指针被销毁

我有以下(简化的)类(class):classOperator{private:std::map>op;public:templatevoidinsertOperand(std::stringconst&s,To=T()){op.insert(std::pair>(s,std::move(std::unique_ptr(newT(o))));}voidsetOperandsValue(std::stringconst&o,intv){op.find(o)->second->setValue(v);}};插入一个新的Operand没有任何问题。然而,当函数返回时,析构函数被调用,因此ma

c++ - 为什么我收到错误 "non-template ' f' used as template”

我正在尝试了解在哪里使用template和typename我遇到了一个我无法完全解决的问题。我有一个模板函数f它使用传递给它的类型(将是一个类)来调用模板成员函数.f.我想我使用typename在函数体中是正确的,但是,我不断收到以下错误:source.cpp:Infunction'voidf()':source.cpp:11:19:error:non-template'f'usedastemplatesource.cpp:11:19:note:use'typenameT::C::templatef'toindicatethatitisatemplatestructA{structC{

c++ - Using Declaration 和 Forward Declaration 之间的冲突

让我们和Bulldog一起去散步:)假设我有一个命名空间Street::House(在命名空间Street内),其中类Bulldog被声明(让它在House/Bulldog.hpp中):namespaceStreet{namespaceHouse{classBulldog{};}}然后,我有Bulldog.hpp:#include"House/Bulldog.hpp"namespaceStreet{usingHouse::Bulldog;}注意正在发生的事情:我将Street::House::Bulldog的声明注入(inject)到命名空间Street作为Street::Bulldo

c++ - QMap 和 std::unique_ptr

我试图防止裸指针,防止内存泄漏等。我还想将int映射到INuiSensor*.由于我也在使用Qt,所以我尝试使用QMap>来执行此操作,但QMap的源代码使这变得不可能:templateQ_INLINE_TEMPLATEtypenameQMap::iteratorQMap::insert(constKey&akey,constT&avalue){detach();Node*n=d->root();Node*y=d->end();Node*last=0;boolleft=true;while(n){y=n;if(!qMapLessThanKey(n->key,akey)){last=n;

C++ ptr_fun 找不到 void 参数化函数

我尝试使用std::ptr_fun来包装我的函数,但是当我尝试使用void参数和bool返回类型来包装一个函数时,我得到了一个错误:代码:std::functioncr=std::not1(std::ptr_fun(&funct1));功能:boolfunct1(){returnfalse;}错误:error:nomatchingfunctionforcallto'ptr_fun(bool(*)())'但每当我将参数更改为int时,问题似乎就消失了。如何使用void参数包装函数? 最佳答案 std::ptr_fun仅适用于一元函数:

c++ - 测试 C++ 代码 : Using test libraries

我学习C++有一段时间了,但这是我第一次接触C++项目(宠物配置解析器库)。我正在使用GoogleC++TestingFramework来测试这个。但我不知道我这样做是否正确。目前,我已经剥离了这个Google测试库的一些部分并将其放入我的项目Test/googletest目录中。它工作正常,但我想知道我是否应该这样做。我在我的项目中包含了测试框架的源代码,它将与我的代码一起发布。这让我感到不舒服。我浏览了someC++projectsonGitHub,试图看看其他人如何处理这个问题。有些有自定义框架,大多数根本不测试代码就解决了整个问题。我想知道我是否做对了,或者我怎样才能采用一种测

c++ - Visual Studio 2013 C++ - 将 std::unique_ptr 传递给绑定(bind)函数

使用VisualStudio2013RC和C++,我尝试将std::unique_ptr传递给已使用std::bind绑定(bind)的函数。但是,我遇到了麻烦,因为当我尝试这个时VS似乎不喜欢它。这是我要编译的内容:#include#include#includevoidfunc(std::unique_ptrarg){std::cout)>bound=std::bind(&func,std::placeholders::_1);std::unique_ptrptr(newint(42));bound(std::move(ptr));return0;}这可以在GCC4.8.1中编译,

c++ - 试图理解 auto_ptr

我试图了解有关auto_ptr类如何工作的某些细节。假设您有以下类(class)(我是在一个网站上找到的,该网站上有人解释了赋值运算符的要点)。classTFoo:publicTSuperFoo{auto_ptrfBar1;auto_ptrfBar2;public:TFoo&TFoo::operator=(constTFoo&that);//variousothermethoddefinitionsgohere...}现在是赋值运算符的实现。TFoo&TFoo::operator=(constTFoo&that){if(this!=&that){auto_ptrbar1=newTBar

c++ - 使用 std::unique_ptr 管理 COM 对象

我正在尝试使用智能指针在我的类中保存COM对象,同时避免使用ComPtr。是否可以为此目的使用unique_ptr?我对智能指针很陌生,到目前为止我有点困惑。请考虑以下简化代码:classTexture{private:structComDeleter{operator()(IUnknown*p){p.Release();deletep;}}ID3D11Texture*m_dumbTexture;std::unique_ptrm_smartTexture;public:ID3D11Texture*getDumbTexture()const{returnm_dumbTexture;}ID