草庐IT

private_extern

全部标签

c++ - 可访问类的私有(private)函数?

一段时间以来,我一直在努力学习C++。最近我遇到了以下代码:#includeusingnamespacestd;classPoint{private:doublex_,y_;public:Point(doublex,doubley){x_=x;y_=y;}Point(){x_=0.0;y_=0.0;}doublegetX(){returnx_;}doublegetY(){returny_;}voidsetX(doublex){x_=x;}voidsetY(doubley){y_=y;}voidadd(Pointp){x_+=p.x_;y_+=p.y_;}voidsub(Pointp){

c++ - 是否可以访问类的私有(private)成员?

是否可以在C++中访问类的私有(private)成员。providedyoudon'thaveafriendfunctionandYoudon'thaveaccesstotheclassdefinition 最佳答案 你的意思是使用一些指针算法来获得访问权限?这是可能的,但绝对是危险的。也看看这个问题:Accessingprivatemembers 关于c++-是否可以访问类的私有(private)成员?,我们在StackOverflow上找到一个类似的问题:

c++ - 与 extern "C"的 C 和 C++ 链接

我在.h文件中定义了一个C++函数,如下所示,并在.cpp文件中实现:extern"C"voidfunc(boolfirst,floatmin,float*state[6],float*err[6][6]){//usesvectorsandclassesandotherC++constructs}如何在C文件中调用func?如何设置我的文件架构/makefile来编译它?谢谢! 最佳答案 您以正常方式从C调用该函数。但是,您需要包装extern"C"在预处理器宏中以防止C编译器看到它:#ifndef__cplusplusextern

c++ - C++中私有(private)成员函数的良好命名约定?

对于成员(member),我用//.......vvSomeTypem_XXX;//.......^^我喜欢使用_作为成员函数的前缀,但是以_或__开头的名称是保留的,不应该被使用。我的想法是,当我有:SomeClassmyObject;myObject.[XXX]当(lib的)用户写下点(.)时,以查看所有仅public的函数(一个接一个)。是否有通用的命名约定?我知道,我可以使用pImpl或继承,带有接口(interface)和实现类 最佳答案 最常见的做法是命名成员函数时不带任何公共(public)前缀或后缀。就个人而言,我认

c++ - 在父类中调用父方法并访问私有(private)变量?

我试图让下面的代码工作,但我找不到关于C++如何处理公共(public)继承和私有(private)继承的足够好的文档来让我做我想做的事。如果有人可以解释为什么我不能使用私有(private)继承或Parent::size访问Parent::setSize(int)或Parent::size>使用公共(public)继承。要解决这个问题,我需要在Parent中使用getSize()和setSize()方法吗?classParent{private:intsize;public:voidsetSize(ints);};voidParent::setSize(ints){size=s;}c

可访问 C++ 私有(private)成员?

这个问题在这里已经有了答案:canyouaccessprivatemembervariablesacrossclassinstances?(2个答案)关闭9年前。我在使用C++的信号类中有这个项目。当我看到这个时,我正在修改我们的教师代码:ListData::ListData(constListData&newlist):Data(),nbNodes(newlist.nbNodes){}正如他所说,这是一个“复制构造函数”,应该大致等同于以下内容:ListData::ListData(constListData&newlist){Data="";//copynbNodesofnewLi

c++ - C的 "extern"是怎么工作的?

我有一个C/C++程序,它是Firefox的插件。因为它是一个插件,所以它有非主入口点。这些入口点需要在C中编译,否则它们的名称会被破坏。但是,其他函数会过载,因此它们需要是C++。解决方案是外部“C”。我已经想通了。但是,如果我在.c文件周围使用extern“C”,我会收到链接错误,因为C++文件的名称被破坏了,但.c文件中的调用却没有。至少我认为这就是正在发生的事情。解决方案似乎是将extern"C"放在.h文件周围。这似乎意味着在.h文件中声明的函数的名称没有被破坏,即使它们是在(可能被破坏的).c文件中定义的。但是,我不明白为什么这会起作用。这是拼团吗?我是否为以后很难发现的错

c++ - C/C++ 私有(private)数组在头文件中初始化

我有一个名为Cal的类,它是.cpp和.h的对应物头文件有classCal{private:intwa[2][2];public:voiddo_cal();};.cpp文件有#include"Cal.h"voidCal::do_cal(){print(wa)//whereprintjustitteratesandprintstheelementsinwa}我的问题是如何初始化数组wa?我似乎无法让它工作。我试过:intwa[2][2]={{5,2},{7,9}};在头文件中,但我收到错误消息说我不能这样做,因为它反对iso..something。还尝试在构造函数中初始化数组wa但这也不

c++ - 公共(public)新私有(private)构造函数

当我尝试编译以下内容时:#includeclassTest{public:void*operatornew(size_tnum);voidoperatordelete(void*test);~Test();private:Test();};Test::Test(){std::cout(test));}intmain(){Test*test=newTest;deletetest;}我明白了:$g++-otesttest.cpptest.cpp:Infunction‘intmain()’:test.cpp:14:error:‘Test::Test()’isprivatetest.cpp:3

在 header 中声明的c++私有(private)成员与在cpp文件中声明的静态变量

我有一个变量,我更喜欢在cpp文件而不是头文件中声明。它应该只能被该类的对象访问。该变量应该为该类的每个对象都有一个单独的拷贝。继承不是必须的。通常,我会在类定义中声明它。嗯:classA{private:intnumber;}但是,我可以这样做吗?B.h:classB{private://nothing}B.cpp:staticintnumber; 最佳答案 不,如果您采用第二种方法,您会将其设为静态变量,这意味着您不会为该类的每个对象拥有不同的拷贝(它们将共享该变量)。无论哪种方式,如果它只应该被那个类访问,它应该放在类声明中,