草庐IT

Private_dirty

全部标签

c++ - 如何允许全局函数访问私有(private)成员

如何允许全局函数访问私有(private)成员?限制是你不能直接friend类声明中的全局函数。原因是因为我不希望用户必须在头文件中看到所有这些全局函数。函数本身是在实现文件中定义的,我希望尽可能将它们隐藏在那里。现在您可能想知道为什么我有这么多这样的全局函数。为简单起见,我将各种WNDPROC函数与windows注册为回调,并且它们必须是全局的。此外,他们必须能够更新对不同类来说是私有(private)的信息。我提出了2个解决方案,但都有些棘手。解决方案1.制作所有需要后门的成员protected而不是private.在实现文件中,声明一个继承自原始类但为protected成员提供公

c++ - 为什么 GCC 允许从私有(private)嵌套类继承?

考虑以下代码:classA{classB{};};templateclassD:A::B{};voidf(){Dd;}D继承自A::B这是一个私有(private)嵌套类。我原以为这是一个错误,但GCC接受了这个代码。是GCC中的错误还是我遗漏了什么? 最佳答案 我找到了答案。因为它可能对其他人有用,所以我将其发布在这里-这是GCC错误47346. 关于c++-为什么GCC允许从私有(private)嵌套类继承?,我们在StackOverflow上找到一个类似的问题:

c++ - 将 'friend class xxxxx' 放在公共(public)部分还是私有(private)部分会有什么不同吗?

classA1{public:friendclassB;}classA2{private:friendclassB;}有什么不同吗? 最佳答案 不,访问说明符对friend声明没有影响。 关于c++-将'friendclassxxxxx'放在公共(public)部分还是私有(private)部分会有什么不同吗?,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.com/questions/2722222/

constructor - 在 kotlin 中,如何将主构造函数中的属性 setter 设为私有(private)?

在kotlin中,如何将主构造函数中的属性setter设为私有(private)?classCity(valid:String,varname:String,vardescription:String=""){funupdate(name:String,description:String?=""){this.name=namethis.description=description?:this.description}}我希望属性name的setter是私有(private)的,而它的getter是公开的,我该怎么做? 最佳答案

constructor - 在 kotlin 中,如何将主构造函数中的属性 setter 设为私有(private)?

在kotlin中,如何将主构造函数中的属性setter设为私有(private)?classCity(valid:String,varname:String,vardescription:String=""){funupdate(name:String,description:String?=""){this.name=namethis.description=description?:this.description}}我希望属性name的setter是私有(private)的,而它的getter是公开的,我该怎么做? 最佳答案

c++ - 为什么声明私有(private)基类会使类型名称不可访问?

令我感到惊讶的是,在以下示例中声明Middle的基类私有(private)使得该名称在后续派生中无法作为类型使用。classBase{public:Base(Baseconst&b):i(b.i){}inti;};classMiddle:privateBase{//因此使用g++(Debian6.3.0-18+deb9u1)6.3.020170516...编译g++-std=c++11privateBase.cpp我得到以下诊断信息:privateBase.cpp:15:9:error:‘classBaseBase::Base’isinaccessiblewithinthisconte

c++ - 私有(private)移动构造函数是为了防止移动吗?

C++中的一个常见模式是将复制构造函数设为私有(private):classA{public://...private:A(constA&);};但是下面的代码会编译吗(在C++11/14中):Af();autoa=f();该标准包含有关自动生成移动构造函数的信息。我既无法访问标准,也无法访问实际生成移动构造函数的编译器。我的问题是:我必须写吗classA{public://...private:A(constA&);A(constA&&);};为了防止移动(和operators=类似)? 最佳答案 Butwillthefollow

c++ - 无法访问类 'std::basic_ios<_Elem,_Traits>' 中声明的私有(private)成员

这个特定方法有问题,不知道如何解决!我得到的错误是上面的:"errorC2248:'std::basic_ios::basic_ios':cannotaccessprivatememberdeclaredinclass'std::basic_ios'C:\ProgramFiles\MicrosoftVisualStudio10.0\VC\include\ostream604"我的方法是:ostreamoperator在标题中:friendstd::ostreamoperator关于如何解决这个问题的任何想法?我认为这与通过引用而不是值传递有关...但我有点困惑!

c++ - 我应该在哪里实现这个 "private"辅助函数?

我的类定义分布在头文件和源文件中://T.hppclassT{public:voidfoo();};//T.cppvoidT::foo(){}如果T::foo需要使用一些只对T可见的辅助函数,以下哪个解决方案是最好的吗?1。私有(private)成员(member)//T.hppclassT{public:voidfoo();private:voidhelper();};//T.cppvoidT::foo(){helper();}voidT::helper(){}2。只能在类定义的TU中访问自由函数//T.hppclassT{public:voidfoo();};//T.cppname

c++ - 可以为嵌套的私有(private)类重载 operator<< 吗?

如何为像这样的嵌套私有(private)类重载运算符classouter{private:classnested{friendostream&operator在外部类编译器之外尝试时会提示隐私问题:error:‘classouter::nested’isprivate 最佳答案 你可以制作operatorouter的friend以及。或者您可以完全实现它inline在nested,例如:classOuter{classInner{friendstd::ostream&operator 关