草庐IT

private_class_greeter

全部标签

c++ - 如何解决 "class must be used when declaring a friend"错误?

classtwo;classone{inta;public:one(){a=8;}friendtwo;};classtwo{public:two(){}two(onei){cout我从Dev-C++收到此错误:aclass-keymustbeusedwhendeclaringafriend但是用MicrosoftVisualC++编译器编译时它运行良好。 最佳答案 你需要friendclasstwo;代替friendtwo;此外,您不需要单独转发声明您的类,因为友元声明本身就是一个声明。你甚至可以这样做://noforward-de

c++ - 非类函数可以私有(private)化吗?

我在我创建的命名空间中有一些函数,这些函数在我的整个程序中都在使用。在头文件中:namespaceNQueens{staticintheur=0;intCalcHeuristic(char**state,intsize);voidCalcHorzH(char**state,int&heuristic,intsize);voidCalcColH(char**state,int&heuristic,intsize);voidCalcDiagH(char**state,int&heuristic,intsize);intcalcCollisions(intqueensPerRow,intsi

c++ - 私有(private)继承和组合,哪个最好,为什么?

关闭。这个问题是opinion-based.它目前不接受答案。想要改进这个问题?更新问题,以便editingthispost可以用事实和引用来回答它.关闭2年前。Improvethisquestion假设我有一个类engin并且我从engin类继承了一个类carclassengin{public:engin(intnobofcylinders);voidstart();};classcar:privateengin{public:car():e(8){}voidstart(){e.start();}private:engine;};现在同样可以通过组合来完成,问题是哪种方法最好并且主要

c++ - 是否可以为const操作指定一个private成员变量public?

我有一个成员变量enabled_m,它的值取决于许多变量。由于这些不变量应该由类维护,我希望它是private:classfoo_t{public:voidset_this(...);//mayaffectenabled_mvoidset_that(...);//mayaffectenabled_mvoidset_the_other_thing(...);//mayaffectenabled_mboolis_enabled()const{returnenabled_m;}private:boolenabled_m;};这行得通,但实际上我的意图是要求foo_t的用户通过该类来修改ena

c++ - 仅对 C++ 中的空私有(private)构造函数使用声明是否正确?

例如,这是正确的吗:classC{private:C();C(const&Cother);}或者您应该提供定义:classC{private:C(){};C(const&Cother){};}?感谢当前的答案。让我们扩展这个问题——编译器是否会在其中一个示例中生成更好的代码?我可以想象为ctor提供主体会强制编译器在编译单元中包含一些(空)代码吗?自动生成的代码也是如此吗? 最佳答案 如果您不希望您的对象可复制,则无需提供实现。只需将复制ctor声明为私有(private)即可,无需任何实现。其他ctors也是如此,如果您不想让任何

c++ - 为什么写 func( const Class &value ) 更可取?

为什么要使用func(constClass&value)而不仅仅是func(Classvalue)?现代编译器肯定会使用任何一种语法来做最有效的事情。这是否仍然是必要的,或者只是对非优化编译器时代的保留?补充一下,gcc将为这两种语法生成类似的汇编代码输出。也许其他编译器没有?显然,事实并非如此。我很久以前从一些代码中得到的印象是gcc这样做了,但是实验证明这是错误的。感谢MichaelBurr,他对similarquestion的回答如果在这里给出,将被提名。 最佳答案 2个签名之间有2个较大的语义差异。首先是在类型名称中使用&。

C++ 错误 : request for member '...' in 'grmanager' which is of non-class type 'GraphicsManager'

这个问题不太可能帮助任何future的访问者;它只与一个小的地理区域、一个特定的时间点或一个非常狭窄的情况有关,这些情况并不普遍适用于互联网的全局受众。为了帮助使这个问题更广泛地适用,visitthehelpcenter.关闭10年前。我的类GraphicsManager出现错误。图形管理器.cpp:#include"C:\Users\ChrisUzzolina\Desktop\obj\include\GraphicsManager.h"#include#includeGraphicsManager::GraphicsManager(intSCREEN_WIDTH,intSCREEN_

c++ - 如何修复 "At least two classes are needed to perform a LDA"?

我正在尝试运行this使用OpenCV采样,但运行它:./facerec_videohaarcascade_frontalface_alt.xmlcsv_align-1给我这个错误:OpenCVError:Badargument(AtleasttwoclassesareneededtoperformaLDA.Reason:Onlyoneclasswasgiven!)inlda,file/build/buildd/opencv-2.4.8+dfsg1/modules/contrib/src/lda.cpp,line1010terminatecalledafterthrowinganins

c++ - 多态性和数据隐藏 : Does a base class override or ignore a derived class' access restrictions?

请看下面的代码list:#includeusingnamespacestd;classBase{public:virtualvoidMessage()=0;};classIntermediate:publicBase{};classFinal:publicIntermediate{voidMessage(){coutMessage();*///Works:Intermediate*finalPtr=&final;//orBase*finalPtr=&final;finalPtr->Message();return0;}注意以下事项:在抽象Base类中,纯虚函数message()是pub

c++ - 在 C++ 中访问未初始化的原子私有(private)变量

假设我有以下类(class):classA{public:......voidincrementN(){++n_;}uint64_tgetN(){returnn_;}private:std::atomicn_;......};假设我初始化了类中的所有其他变量,n_除外,并且这不是线程本地存储,因此没有零初始化。我创建了一个类A的对象,并继续调用incrementN()。如果在某个时候我想要n_的值,并且我调用了getN(),这是否会导致load()例程原子n_崩溃? 最佳答案 加载默认使用memory_order_seq_cst。看