草庐IT

without_protection

全部标签

c++ - 为什么派生类不能在这段代码中调用 protected 成员函数?

#includeclassBase{protected:voidsomethingProtected(){std::cout我认为也许只有this的protected成员可以使用,而其他实例的protected成员永远无法访问。但是:classDerived:publicBase{public:voidsomethingDerived(Derived&d){d.somethingProtected();//Thiscompileseventhoughdis//potentiallyadifferentinstance}voidsomethingDerived(Base&b){b.som

“预期声明或陈述”([email protected]构建C:\ ..)

我才刚刚开始玩(Angular2),遇到了这个问题,这是我已经进行了反复试验并修复了半结肠,但什么也没有发生,这不断给我带来错误的命令行。app.component.ts命令行看答案尝试以此为导出:exportconsthero:Hero={...}有关更多信息,我建议您阅读有关命名出口的信息https://developer.mozilla.org/en/docs/web/javascript/reference/reference/statements/export

c++ - 访问父类(super class)类型成员对象的 protected 成员——一个优雅的解决方案

首先,我知道我做不到,我认为这不是重复的问题(this和this问题处理的是同一个问题,但他们只想解释为什么它不起作用).所以,我对类和继承有类似的概念,我会以某种方式优雅地做一些被禁止的事情。这是一个非常简单的代码片段,它反射(reflect)了我想要做的事情:#includeclassA{protected:intvar;std::vectorheavyVar;public:A(){var=1;}virtual~A(){}virtualvoidfunc(){std::coutvarmyA=&a;this->var=this->myA->var;//copysomesimpledat

c++ - Q文件对话框 : GtkDialog mapped without a transient parent

我有一个用C++中的Qt编写的程序的源代码片段,在Linux下运行,它创建一个QFileDialog来打开现有文件。如果我执行此操作,一切似乎都正常,但是当创建对话框时,我收到一条警告说“Gtk-Message:GtkDialogmappedwithoutatransientparent”。在另一个thread我发现调用此函数“gtk_window_set_transient_for()”可修复此错误。但是这个函数是GTK库的一部分但是我使用的是Qt框架。那么有什么解决方案可以解决这个错误吗?这个对话框的父级是一个QMainWindow:QStringfilename=QFileDia

c++ - 依赖模板库的 protected 成员

所以我通读了this问题,我理解模板中依赖名称的前提,以及有时如何必须使用this->限定方法以确保编译器能够正确找到它,但是我遇到了一个场景我不知道如何解决。具体来说,当该方法所属的对象与*this属于同一类型,但它是不同的对象(可能属于不同的子类)时。例如:#includetemplateclassA{protected:virtualvoidfoo()=0;};templateclassB:publicA{};templateclassC:publicB{protected:voidfoo()override{std::coutclassD:publicB{protected:v

c++ - 警告 : auto-importing has been activated without --enable-auto-import specified on the command line

我的环境:QtCreator2.3.1Qt4.7.4(32位)Windows7旗舰版(64位)尝试在QtforWindows中重建项目时,我遇到以下编译器警告:warning:auto-importinghasbeenactivatedwithout--enable-auto-importspecifiedonthecommandline.Thisshouldworkunlessitinvolvesconstantdatastructuresreferencingsymbolsfromauto-importedDLLs.发出此警告的项目包含一个DLL文件。尽管有警告,DLL中的类和函数

C++:无法从派生类访问 protected 成员

我有一个MyVariable类,它包含一个对象并在必须修改该对象时做一些额外的工作。现在我想将其专门用于MyContainer,用于容器对象,这些容器对象仅在容器本身被修改(例如通过push_back())而不是其元素时执行此额外工作。我的代码是这样的:templateclassMyVariable{public://read-onlyaccessiffineconstT*operator->()const{return(&this->_element);}constT&operator*()const{return(this->_element);}//writeaccesviath

c++ - protected 成员不能通过指针或对象访问

我有2个类Training和Testing,其中Training是基类,Testing是派生类训练类。我有Testing类成员函数,floattotalProb(Training&classProb,Training&total),它有2个参数,都是Training类对象。代码:voidTesting::totalProb(Training&classProb,Training&total){_prob=(_prob*((float)(classProb._nOfClass)/total._tnClass));coutfirst基本上这个函数所做的是计算test1(Testing类的一

c++ - protected 成员变量的错误共享?

考虑:classVector{doublex,y,z;//…};classObject{VectorVec1,Vec2;std::mutexMtx1,Mtx2;voidModifyVec1(){std::lock_guardLock(Mtx1);/*…*/}voidModifyVec2(){std::lock_guardLock(Mtx2);/*…*/}};如果互斥量或protected变量连续存储,并且在缓存时共享缓存行,这会导致某种“交叉锁定”吗?如果是这样,在互斥锁保护的变量之后(或之前)声明互斥锁是一个好习惯吗?将类与std::hardware_destructive_inte

c++ - 使用 protected 非虚拟析构函数时抑制 delete-non-virtual-dtor 警告

我有一个纯抽象接口(interface)类和一个实现该接口(interface)的派生类。structFoo{virtualvoiddoStuff()=0;};structBar:Foo{voiddoStuff()override{}};我的接口(interface)类没有虚拟析构函数。因此,尝试使用基类指针破坏派生实例显然是未定义的行为intmain(){Foo*f=newBar;f->doStuff();deletef;}幸运的是我的编译器足够聪明,可以捕捉到这个(使用-Werror)main.cc:15:9:error:deletingobjectofabstractclasst