草庐IT

friends_who_like

全部标签

c++ - 与 friend 一起上课而不是前向声明,: which compiler is correct

这个问题在这里已经有了答案:Friendmethod"notdeclaredinthisscope"inC++(1个回答)Error:'FriendMemberFunctionName'wasnotdeclaredinthisscope(3个答案)关闭3年前。我有这个简单的C++程序:#includestructobj{friendintf(int);voidm(intx){std::cout如果我使用GNUC++编译器g++进行编译,我会得到错误prog.cpp:7:55:error:'f'wasnotdeclaredinthisscope但是,如果我使用cl(和/W4)编译它,它会

c++ - ADL 和 friend 注入(inject)

考虑这段代码:templatestructX{friendvoidf(X*){}};intmain(){f((X*)0);//Error?}编译器似乎非常不同意。(MSVC08/10说不是,GCC根据“C++模板-完整指南”:...itisassumedthatacallinvolvingalookupforfriendsinassociatedclassesactuallycausestheclasstobeinstantiated...AlthoughthiswasclearlyintendedbythosewhowrotetheC++standard,itisnotclearly

c++ - C++ 中的 friend 和模板

我的C++代码示例中有一个大问题。“friend”和"template"有问题。错误信息:Matrix.h:26:79:警告:frienddeclaration'std::ostream&matrixClass::operatorMatrix.h:26:79:注意:(ifthisisnotwhatyouintended,makesurethefunctiontemplatehasalreadybeendeclaredandaddafterthefunctionnamehere)Matrix.h:28:77:警告:frienddeclaration'matrixClass::Matrix

c++ - operator << friend 函数和模板

这是我的代码:动画.h#includetemplateclassMovie{public:Movie(Tin){a=in;}friendstd::ostream&operator&movie);private:Ta;};templatestd::ostream&operator&movie){returnos;}主要.cpp#include"mov.h"intmain(){Moviemovie1(1);std::cout我尝试编译这段代码,但出现错误:Error1errorLNK2019:unresolvedexternalsymbol"classstd::basic_ostream>

c++ - 如何与模板化类的构造函数成为 friend ?

为什么classA;templateclassB{private:A*a;public:B();};classA:publicB{private:friendB::B();intx;};templateB::B(){a=newA;a->x=5;}intmain(){return0;}结果../src/main.cpp:15:error:invaliduseofconstructorasatemplate../src/main.cpp:15:note:use‘B::B’insteadof‘B::classB’tonametheconstructorinaqualifiedname还在改变

c++ - Qt:实现 "oscilloscope-like"实时绘图的最佳方式

我正在为Qt开发一个Gui模块来绘制实时测量值,就像在数字示波器中一样,基于Qwt.目前一切正常,但也许还有一些功能需要添加;-)此刻,数据按列存储在QVectors中,与一个全局时间引用QVector一起存储在一个单独的QObject中。因此,可以按行丢弃数据,只保留Meusurement到某个过去。所有QVectors始终具有相同的长度。然后可以在QwtPlot中按行按时间正确绘制完整数据。我想更多地封装数据存储,以便更独立于处理测量。因此,最好为每个测量添加一个单独的时间坐标列表,并将它们都放在一个单独的QObject中,它接受和传递数据。然后会有10或20个这样的QObject

C++ 模板 friend 奇怪的行为

我在下面的代码中看到一些我无法解释的东西。在VS6、VS9和GCCT2::foo2()下给出错误:“bar”:无法访问类“C1”中声明的protected成员。但是,如果您删除C1::bar(),它会正确编译和运行,即使T2仍在访问protectedC1B:bar(),您会认为这会是同样的问题。请注意,在T2::foo2()中,您可以将'pT1'转换为'T1*',一切都很好,但这仍然不能解释为什么允许C1B::bar(),但C1::bar()不是。templateclassT2;templateclassT1{//templatefriendclassT2;-->thisdoesn't

c++ - 有 friend 看基类吗?

给定示例代码:classBase{public:boolpub;protected:boolprot;};classDerived:privateBase{friendclassMyFriend;};classMyFriend{Derived_derived;voidtest(){//Doesstandardprovidemeaccessto_derived.puband_derived.prot?cout作为好友,我是否可以像我作为好友的类中的成员函数一样获得所有访问权限?换句话说,因为我是friend,我可以获取私有(private)继承的基类的protected成员和公共(pub

c++ - 模板 friend 类 : Forward Declaration or. ..?

假设我有一个模板类,我试图将其声明为友元类。我应该转发声明类还是给它自己的模板?例子:templateclassSLinkedList;templateclassSNode{private:Eelem;SNode*next;friendclassSLinkedList;};或者templateclassSNode{private:Eelem;SNode*next;templatefriendclassSLinkedList;}; 最佳答案 您的第一种方法可能就是您想要的。它将使SLinkedListSNode的friend,并且所有

c++ - 在 if-else if 链中使用 Likely()/Unlikely() 预处理器宏

如果我有:#definelikely(x)__builtin_expect((x),1)#defineunlikely(x)__builtin_expect((x),0)if(A)returntrue;elseif(B)returnfalse;...elseif(Z)returntrue;else//thiswillneverreallyhappen!!!!raiseError();returnfalse;我能否像elseif(likely(Z))一样将likely()放在最后一个条件检查周围,以表示在编译器不影响分支预测的情况下最终语句(else)的可能性很小之前的检查?基本上,如果