草庐IT

弱引用

全部标签

c++ - 在构造函数中引用此指针

Followingisanotherexampleofforwarddeclaration,whichmightbeusefuliftheapplicationneedsaself-sustainingarrayofobjectswhichisabletoaddandremoveobjectsfromitselfduringrun-time:Filea.h:classA{public:staticA*first,*last;A*previous,*next;A();~A();};Filea.cpp:#include"a.h"A*A::first=0,*A::last=0;//don't

c++ - 为什么引用调用运营商需要 & 符号

我认为C++规范说在引用函数时函数前面的&符号不是必需的,即voidbar();voidfoo(void(*bar)());foo(bar);foo(&bar);//Sameasabove.但是,我发现了一个不正确的案例。我试图对lambda(仅单个参数)进行模板特化,以便我可以访问lambda的返回参数和输入参数的类型。//Theampersandinfrontof'Fn::operator()'isnecessarytomake//thiscodework.templatestructSignature:publicSignature{};templatestructSignatu

c++ - 实现虚函数时未定义对 vtable 的引用

这个问题在这里已经有了答案:Undefinedreferencetovtable(21个回答)关闭6年前。我尝试实现JesseLiberty和TimKeogh编写的“C++编程入门”示例,但实现纯虚函数是编译而不是构建。它给出了错误:未定义对“vtableforcircle”的引用我尝试用变量itsRadius替换虚函数GetItsRadius以查看它是否可行,但它开始在switch语句中给我同样的错误,但对于Rectangle和Square以及circle之前的错误。代码如下:#includeusingnamespacestd;enumBOOL{FALSE,TRUE};classSh

C++ 对类数据成员的引用

这个问题在这里已经有了答案:Whydoesn'treference-to-memberexistinC++?(1个回答)关闭6年前。我最近才发现类数据成员指针的存在,例如:classCar{public:intspeed;};intmain(){intCar::*pSpeed=&Car::speed;return0;}对类数据成员的引用是否也存在?如果是这样,声明它们的语法是什么?

C++做引用占用内存

我读到引用只是符号表中存在的变量的别名。考虑以下代码intmain(){inty=6;int&z=y;intk=43;test(2,y,5,78);cout对于我得到的输出0039F7400039F8480039F7480039F74C0039F8480039F8480039F830如果reference在栈中不占内存,为什么会偏移内存。例如。在函数测试中,局部变量a在0039F740,g在0039F748。g不应该在0039F744吗?有人能详细解释一下吗? 最佳答案 您的函数有四个参数。每个参数都必须传递给函数。其中一个参数是引

c# - 将通用 Windows C# 类库引用添加到通用 Windows C++ DLL 项目 Visual Studio 2015

如标题所述,我正在尝试将UWPC#类库引用添加到UWPC++DLL项目。这两个项目都针对Windows10v10.0.14393.0。添加引用后,一切似乎都是有效的,引用显示在引用列表下,没有列出任何错误。当您尝试使用引用并编译时,出现以下错误:C2871anamespacewiththisnamedoesnotexist.我是不是漏掉了什么?创建新的通用WindowsC++项目时,唯一的选项是DLL、静态库和Windows运行时组件。C++没有类库选项。我尝试了所有三个不同的项目,结果相同。有人可以提供解决方案和/或解释为什么我无法从UWPC++项目引用UWPC#类库吗?这似乎应该是

c++ - 未定义对 clang 中函数指针的变量模板的引用,但不是 gcc

#includestaticconstexprboolisSSE2=true;templatestaticvoid(*fp)();templatestaticvoidfoo_c(){std::coutstaticvoidfoo_sse2(){std::cout=foo_sse2;elsefp=foo_c;fp();return0;}我有一个使用变量模板的项目,它本身就是一个指向函数的指针。上面的示例代码在GCC6.3中编译和执行良好,但在clang3.9.1中给出警告和错误。$clang++"Source.cpp"-o"foo.exe"-std=c++14-O2Source.cpp:6

c++ - 如何在默认模板参数中引用自身类型?

我们有一个reference_counted模板和一个默认的default_deallocator类如下:templateclassdefault_deallocator{voidoperator()(T*obj){deleteobj;}};templateclassreference_counted:T{public:voidretain(){ref_count++;}voidrelease(){ref_count--;if(ref_count==0){deletethis;}}}我们想为reference_counted类添加释放器。但是我们不知道如何编写默认模板参数,因为编译器会

c++ - .natvis - 如何引用模板模板参数?

我正在尝试创建一个.natvisVisualStudio的文件。根据这个page我可以使用$T1,$T2引用模板参数等等。所以在MyClass的情况下$T1将引用类型A.这行得通。但就我而言A本身就是一个模板,我需要引用它的参数,某种$T1-但这显然行不通。 最佳答案 至少在VisualStudio2015中,模板参数伪变量$T1,$T2等似乎实际上对应于类型“名称”表达式中的通配符,而不是严格对应于模板参数。例如,当匹配outer,short,long>,$T1扩展为int,$T2扩展为float和$T3扩展为short,long

c++ - 为什么 std::forward 将左值和右值转换为右值引用?

我想我对std::forward感到困惑.我的函数使用std::forward如下,但为了便于解释,它进行了很多简化和修改。//Thisisanexamplecodetoexplainmyquestionsimply.templatevoidadd(Element&&element){staticstd::vectorvec;vec.push_back(std::forward(element));}我用上面的函数尝试了两种情况;Case1左值参数和Case2右值参数。案例1:左值参数autosome_class=SomeClass();add(some_class);案例2:右值参数