草庐IT

static成员

全部标签

【C++】类与对象(四)——初始化列表|explicit关键字|static成员|友元|匿名对象

前言:初始化列表,explicit关键字,static成员,友元,匿名对象文章目录一、构造函数的初始化列表1.1构造函数体内赋值1.2初始化列表二、explicit关键字三、static成员四、友元4.1友元函数4.2友元类五、内部类六、匿名对象一、构造函数的初始化列表1.1构造函数体内赋值classDate{public: Date(intyear,intmonth,intday){ //赋值,并非初始化 _year=year; _month=month; _day=day; }private: int_year; int_month; int_day;};构造函数调用之后,在函数体

c++ - 当 CComPtr 作为类的成员变量时如何销毁它?

当CComPtr作为类的成员变量时,如何销毁它?下面是我写的一段代码,m_piControl是成员变量CComPtr。我已将m_piControl的值分配给rpControl和rpControl以供进一步使用。HRESULTCSession::GetInterface(OUTCComPtr&rpControl){if(m_piConSIControl==NULL){CComPtrpConDM;HRESULThResult=GetMaintenance(&pConDM);if(FAILED(hResult))returnhResult;CComQIPtrpMaintenance(pCon

c++ - 解决对成员的请求...这是非类类型

我想知道为什么以下代码在VisualStudio中编译但在移植期间在MingwGCC中给出编译错误。这是我第一次接触__m128类型但是来自this链接在这里它指出Youshouldnotaccessthe__m128fieldsdirectly.Youcan,however,seethesetypesinthedebugger.Avariableoftype__m128mapstotheXMM[0-7]registers.代码库很旧,这种类型被用作Matrixm;__m128b0=_mm_set_ps(b[0][0],b[1][0],b[2][0],0);__m128b1=_mm_s

c++ - 如何从对象实例中获取成员 typedef

在MSVC2010中给出如下代码:错误C2039:“my_type”:不是“全局命名空间”的成员templateclassC{public:typedefTmy_type;};Cc;autof=[&c](){decltype(c)::my_typev2;//ERRORC2039};我找到了一个蹩脚的方法来解决它,但我想知道当你只有一个对象实例时获取typedef的正确方法是什么。 最佳答案 从一堆非常有用的评论中,我得到了一个可行的解决方案。感谢大家。remove_reference作为身份对象具有双重用途。templateclas

c++ - Google Mock中如何访问私有(private)成员

我正在尝试为一个带有私有(private)vector的类编写模拟,它将数据插入到私有(private)vector中。但是,我没有看到使用GoogleMock来做到这一点的方法。理想情况下,我不希望在我的界面中有任何与测试相关的内容。此外,我不想让私有(private)vectorprotected并子类化该类并添加访问器方法,因为这会导致我的代码泄漏其实现。这是我目前所拥有的。我想要完成的是用Fake类插入数据,并使用Mock类在指向Fake类的指针上调用Real::first()(这样我就可以使用Fake的vector而不是Real的vector)。编译此程序时,返回-1而不是4

c++ - 模板类实例化的多重继承以及对成员函数的访问

让我们看一下代码:templateclassS{public:voidadd(Cc){++cnt;}size_tsize()const{returncnt;}private:size_tcnt{};};structFoo1{};structFoo2{};structFoo3{};classZ:publicS,publicS,publicS{public:usingS::add;usingS::add;usingS::add;usingS::size;//(1)usingS::size;//(2)usingS::size;//(3)};用法是这样的:Zz;z.add(Foo1{});z.

c++ - clang 和 gcc 在处理模板生成和静态 constexpr 成员时的不同行为?

考虑以下程序(抱歉太长了;这是我能想到的表达问题的最短方式):#include#include#includeusingnamespacestd;std::vector&test_vector(){staticstd::vectorrv;returnrv;}templateclassRegistrarWrapper;templateclassRegistrar{Registrar(){auto&test_vect=test_vector();test_vect.push_back(std::type_index(typeid(T)));}friendclassRegistrarWrap

c++ - 如果基类包含数组成员,则派生类的构造函数不能是 constexpr

我想定义派生类型(SBar)的constexpr值,使用构造函数,其唯一参数是基类(SFoo)的变量,它仅用于初始化基类。当基类没有数组成员时,这很好用。但是,当我添加一个数组时,派生值不再是constexpr。不过,基类的简单拷贝确实会产生constexpr结果。为了安全起见,我已明确默认所有复制和移动构造函数。测试.cpp#defineUSE_ARRAYstructSFoo{constexprSFoo()=default;constexprSFoo(SFooconst&)=default;constexprSFoo(SFoo&)=default;constexprSFoo(SFoo

c++ - 类 C++ 初始化顺序的静态函数成员中的静态数据成员

我有一个宏,用于将键、值添加到注册表映射。(假设AddToMap位于在其他地方定义的全局静态对象上。)在定义不同的类(某种类的注册表)之后,在代码的不同位置调用AddKey宏。代码分成很多.h和.cc文件,依赖关系复杂。我有以下有效的代码:#defineAddKey(key,val)\namespaceNSP_##key{\classA{\public:\staticboolfoo(){\staticbooldummy=AddToMap(#key,#val);\}\};\staticbooldummy_A=A::foo();\}`我想知道静态变量dummy是如何创建和初始化的。当我使用

c++ - 如何从 std::array<T, N>::pointer 成员/依赖类型中推断出数组大小?

我的目标是为strcpy编写安全的替代品对于在编译期间已知目标缓冲区大小的情况,我希望推断出缓冲区大小,因此用户不需要知道它。例如:charxs[2]={0};strcpy(xs,"abc");//bufferoverflow!printf("[%s]\n",xs);此输出(希望)是:[abc]对于简单的情况,当传递C风格的数组时,可以毫不费力地写成:templatechar*safe_strcpy(char(&dst)[N],constchar*src)noexcept{std::snprintf(dst,N,"%s",src);return&dst[0];}推导出数组的大小,snp