草庐IT

friend_name

全部标签

c++ - friend 功能和 friend 类有什么区别?

友元函数和友元类有什么区别?应该在哪里使用friend关键字? 最佳答案 简而言之,一个是类,一个是函数。对于函数,只有一个函数可以访问私有(private)成员。对于一个类,整个类及其所有函数都可以访问友好类的私有(private)成员。friend关键字用于授予对私有(private)数据成员的访问权限。有时您可能需要帮助类或免费类来访问不同类的私有(private)成员。对于函数,一个常见的例子是运算符重载。也许您想重载+运算符。您可以在类外部声明一个operator+函数(这样它就可以在没有对象的情况下被调用)并且它需要访问

c++ - 枚举 "does not name a type' 的问题

g++(Ubuntu/Linaro4.4.4-14ubuntu5)4.4.5我有一个问题,我似乎找到了我得到这个错误的方法。文件statemachine.h#ifndefSTATEMACHINE_H_INCLUDED#defineSTATEMACHINE_H_INCLUDED#include"port.h"enumstate{ST_UNINITIALIZED=0x01,ST_INITIALIZED=0x02,ST_OPENED=0x03,ST_UNBLOCKED=0x04,ST_DISPOSED=0x05};voidstate_machine(eventevt,port_t*port)

c++ - 错误 : ‘i’ does not name a type with auto

这个问题在这里已经有了答案:HowdoIenableC++11ingcc?(4个答案)关闭7年前。我是C++新手,这是我的程序#include#include#include#include#includeintmain(){staticconstdoublearr[]={16.0,2.2,77.5,29.0,24.0};std::vectorvec(arr,arr+sizeof(arr)/sizeof(arr[0]));std::transform(vec.begin(),vec.end(),vec.begin(),bind2nd(std::minus(),3.0));for(aut

c++ - 错误 : '...' does not name a type

我有一个工作项目。重新安排一些代码后,我尝试重新编译我的项目,然后奇怪的事情开始发生。查看编译器输出的这段摘录。我正在使用MinGWG++从Windows上的Eclipse进行编译。****BuildofconfigurationDebugforprojectPract2********InternalBuilderisusedforbuild****g++-O0-g3-Wall-c-fmessage-length=0-omove.o..\move.cppInfileincludedfrom..\/game.h:11:0,from..\/piece.h:10,from..\/move.

c++ - 继承 : expected class-name before ‘{’ token

我试图在C++中创建一个异常类,但它不起作用。我已将代码减少到最少,但仍然找不到错误。这是我的头文件:#ifndefLISTEXCEPTION_H#defineLISTEXCEPTION_H//C++standardlibraries#include/*CLASSDEFINITION*/classListException:publicexception{};#endif//LISTEXCEPTION_H这是我得到的错误:error:expectedclass-namebefore‘{’token这是出乎意料的。我该如何解决这个问题? 最佳答案

c++ - 指向 typeinfo::name() 的内存的生命周期是多少?

在C++中,我可以使用typeid运算符来检索任何多态类的名称:constchar*name=typeid(CMyClass).name();返回的constchar*指针指向的字符串对我的程序可用多长时间? 最佳答案 只要带有rtti的类存在。因此,如果您处理单个可执行文件-永远。但是对于动态链接库中的类,它会发生一点变化。可能你可以卸载它。 关于c++-指向typeinfo::name()的内存的生命周期是多少?,我们在StackOverflow上找到一个类似的问题:

java - Java 是否提供 'friend' 访问修饰符?

我想知道Java是否提供“friend”(如在C++中)访问修饰符?有人说我们可以将“friend”作为Java中的默认修饰符。是真的吗? 最佳答案 Java中的默认访问修饰符允许同一包中的任何代码访问成员。 关于java-Java是否提供'friend'访问修饰符?,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.com/questions/5770852/

C++ 风格约定 : Parameter Names within Class Declaration

我是一个相当新的C++程序员,我想听听支持和反对在类声明中命名参数的争论。这是一个例子:Student.h#ifndefSTUDENT_H_#defineSTUDENT_H_#includeusingnamespacestd;classStudent{private:stringname;unsignedintage;floatheight,GPA;public:Student(string,unsignedint,float,float);voidsetAge(unsignedint);};#endif/*STUDENT_H_*/对比#ifndefSTUDENT_H_#defineS

c++ - friend 困惑

$11.4/5-“[...]类中定义的友元函数在定义它的类的(词法)范围内[...]”这句话是什么意思?structA{typedefintMYINT;voidf2(){f();}//Error,'f'isundefinedfriendvoidf(){MYINTmi=0;}//Whydoesthiswork,shouldn'itbeA::MYINT?voidf1(){f();}//Error,'f'isundefined};intmain(){}这里令人困惑的是从“A::f1”调用“f”是完全可以理解的。但是,为什么当friend处于友好类的“词汇”范围内时,从“A::f2”调用“f”

c++ - "already a friend"警告什么时候有用?

我的代码使用大量预处理器框架来生成一些实用程序类。显然,某些宏会导致相同的friend声明在一个类中被包含两次,如下所示:classFriendly{//:::friendclassBestie;friendclassBestie;//:::};当使用gcc(4.8.1)构建时,它会生成类似这样的警告BestieisalreadyafriendofFriendly[enabledbydefault]我真的看不出这个警告有什么用。我很好奇为什么它首先包含在gcc中。然而,由于SO社区很难回答这个问题,我将这样陈述我的问题:出现指示?我能想到的唯一可能暗示的问题是“你可能打算在这里写一些别