草庐IT

vec_private

全部标签

c++ - 如何让派生类访问私有(private)成员数据?

我遇到了一个C++问题。我有一个基类,它在类的私有(private)可见区域内有一个自引用对象指针。我在基类中有一个构造函数来初始化这两个指针。现在我的派生类的访问说明符是私有(private)的(我想将基类的公共(public)成员函数设为私有(private))。现在通过我的派生类的成员函数,我想创建一个对象指针,它可以指向基类的私有(private)数据,即那些自引用对象指针。我的代码是:classbase{private:base*ptr1;intdata;public:base(){}base(intd){data=d}};classderived:privatebase{p

c++ - 是否为 initializer_list 提供一个私有(private)构造函数?

此标准草案显示了initializer_list的概要.它没有私有(private)构造函数。但是我看过的两个标准库实现,libstdc++和libc++,都提供私有(private)构造函数://Thecompilercancallaprivateconstructor.constexprinitializer_list(const_iterator__a,size_type__l):_M_array(__a),_M_len(__l){}_LIBCPP_ALWAYS_INLINE_LIBCPP_CONSTEXPR_AFTER_CXX11initializer_list(const_E

c++ - 将 GLSL 转换为 C++ float/vec3?

这一行到底做了什么ra.rgb*ra.w/max(ra.r,1e-4)*(bR.r/bR);我比较困惑的地方是怎么翻译(bR.r/bR);一个float除以一个vec3?我想将其转换为C++,但返回一个float除以vector的所有元素是什么?等等(无法访问显卡以检查?) 最佳答案 这是一个组件划分的例子,它的工作原理如下:GLSL4.40Specification-5.9表达式-pp.101-102Ifthefundamentaltypesintheoperandsdonotmatch,thentheconversionsfro

c++ - 错误 : base class 'A1' has private copy constructor

在windows平台上使用Clang3.7见以下代码:classA1{public:A1(char*name){}virtual~A1(){}private:A1(constA1&){}};classB1:publicA1{public:B1():A1(""){}};我收到以下错误:MyFile(31):8:error:baseclass'A1'hasprivatecopyconstructorB1():A1(""){}^MyFile(25):2:note:declaredprivatehereA1(constA1&){}^公开A1复制构造函数,消除错误!这里发生了什么?注意:通过改变

c++ - 如何检查类是否具有默认构造函数,公共(public)的、 protected 或私有(private)的

我需要检查一个类C有一个默认构造函数,可以是隐式的也可以是自定义的,并且可以是public,protected或private.我尝试使用std::is_default_constructible::value,如果C则返回真有一个public默认构造函数(隐式或自定义)但false如果C有一个protected或private默认构造函数(尽管接缝是标准行为。)有什么方法可以检查一个类是否有protected或private默认构造函数?注意(如果这可能有帮助):检查是从friend函数执行的类(class)C待检查。我需要执行此检查以默认构造对应于nullptr的对象m_objs的

c++ - 如果私有(private)变量已更改,如何进行单元测试

假设我在C++中有这个类:classExampleClass{private:intexample_var;public:voidexampleMethod(){example_var=other_value;//othervaluewillbealwaysdifferent}}如何对exampleMethod()进行单元测试?我想做这样的事情:voidtestExampleMethod(){ExampleClassobj;intbefore_call_value=obj.example_var;obj.exampleMethod();intafter_call_value=obj.e

c++ - 隐藏私有(private)重载虚函数?

我有一个大致如下工作的类层次结构:classA{protected:virtualvoidf(int)=0;};classB{protected:virtualvoidf(char*)=0;};classDA:A{private:virtualvoidf(int)override{}};classDB:publicDA,B{private:virtualvoidf(char*)override{}};当我尝试使用clang(或gcc,就此而言)进行编译时,它会发出警告:22:18:warning:'DB::f'hidesoverloadedvirtualfunction[-Woverl

c++ - 当你是 friend 时,为什么 GCC 不允许从私有(private)嵌套类继承?

问同样的问题:为什么GCC允许从私有(private)嵌套类继承?对于非模板类,它允许从私有(private)嵌套类继承,如果它是一个friend,但不是模板类。是错误吗?templateclassInheritFromBaseMember:publicBase::MemberPrivate//error{usingPrivateMember=typenameBase::MemberPrivate;//worksfine};classMyBase{friendclassInheritFromBaseMember;//anothertrytodeclareitfriendtemplate

c++ - 使用指令、重载的私有(private)继承?

我在一个项目中使用私有(private)继承,在“根据”意义上实现。基类定义了operator[],这是我想要使用的功能。因此,我有classA:privateB{usingB::operator[];//...};但是,如何控制我得到的operator[]版本?事实上,我需要不止一个,包括const和非const版本。这能实现吗? 最佳答案 我的理解是您的using应该自动引入运算符的所有不同重载。您是否希望将某些重载排除在子类之外?在这种情况下,最好将工作拆分为父级中几个不同名称的函数,并且只使用您需要的函数。

c++ - 更正友元定义以授予 std::map 对私有(private)默认构造函数的访问权限

我正在开发一个使用结构的库,该结构不应具有该库用户可访问的默认构造函数。structExample{Example(intx);private:Example();};在库中,std::map需要默认构造函数来创建新条目。该库非常小心地在使用默认构造函数的任何地方实际放置值。库使用映射来存储这些结构,如下所示:std::mapdata;检查HEREFORACOMPLETEEXAMPLE在ideOne中。我想阻止库的用户使用默认构造函数。我如何与std::map、std::pair和/或std::tuple交friend以允许std::map使用此默认构造函数?friendclassst