C++ 访问类对象类型C++;
如何访问静态声明的私有成员函数中的类对象类型C++ 访问类对象类型C++;,c++,C++,如何访问静态声明的私有成员函数中的类对象类型 class Y { .. private: friend class X; X *myX; }; class X { public: friend class Y; private: static int foo( const char * const key ); Y *myX; }; int X::foo( const char * const key ) { X *myX = NULL;
class Y
{
..
private:
friend class X;
X *myX;
};
class X
{
public:
friend class Y;
private:
static int foo( const char * const key );
Y *myX;
};
int X::foo( const char * const key )
{
X *myX = NULL; // illegal.
}
静态强制转换和静态强制转换引用没有像我预期的那样工作。如果
maxSize
是类X的正常成员,那么您不能以这种方式访问它。您必须将其作为另一个参数传递给函数
如果
maxSize
是该类的静态成员,那么该代码应该可以工作
如果这不是您要问的,那么您需要澄清您的问题,并可能添加一些代码来显示您遇到的问题
编辑: 在您的新示例中,您标记为“非法”的行实际上是按照您编写的方式编译的。(它声明了一个名为
myX
的本地X
指针,该指针仅存在于该函数中。)
但我猜你的意思是:
int X::foo( const char * const key )
{
myX = NULL;
}
这将失败,因为myX
不是一个静态变量。静态函数无法访问普通成员变量。他们只能访问静态变量
您需要修改您的设计:
- 如果在您的程序中合适,可以使
成为myX
的静态成员X
- 或者使
成为非静态成员函数X::foo
- 或者向
添加另一个参数,通过该参数可以访问X::foo
。根据你想如何设计东西,有几种方法。下面是一个示例:myX
intx::foo(constchar*constkey,X*&theXpointer)
- 您不能在静态函数中访问成员数据。它只能访问静态数据和其他静态函数。如果您需要一个类函数来作用于对象的成员,则不应将该函数声明为静态函数,或者需要将该对象作为参数传递给静态函数。我不确定您所说的“访问类对象类型”是什么意思。您编写的代码将允许您在静态X::foo函数中使用X类型(当然,您必须从它返回一个值,因为您已经声明它返回一个int)
正如您所写的,您正在声明一个指向X实例的指针,并且从您的代码中,我不确定这是否是您想要的,或者您将如何使用该指针。您应该以可读的方式格式化您的代码……并接受您其他问题的一些答案。10分钟是做这些事情的截止时间吗?=/s在哪里示例中的静态强制转换或静态强制转换引用?您的问题是什么?您的代码示例缺少问题的一些重要元素。。。