草庐IT

成员方

全部标签

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

c++ - 每当成员变量可以由可变参数构造时,有条件地启用构造函数

我有一个类foo使用模板参数Tuple我想提供一个可变参数构造函数来初始化一个成员变量m_elements类型Tuple,每当表达式m_elements{static_cast(std::forward(elements))...}已定义。我们可以通过以下方式做到这一点:templatestructfoo{usingvalue_type=typenameTuple::value_type;template(std::declval())...})>foo(Elements&&...elements):m_elements{static_cast(std::forward(element

c++ - 标题中的缩进成员

我正在使用AccessModifierOffset来缩进访问修饰符。但我现在希望成员们更进一步。这样变成这样如何实现?这些是我的clang格式设置:---AccessModifierOffset:'0'IndentWidth:'4'BreakBeforeBraces:LinuxKeepEmptyLinesAtTheStartOfBlocks:'false'SpaceBeforeParens:NeverTabWidth:'4'UseTab:AlwaysColumnLimit:0... 最佳答案 目前clang-format不支持此功能