在CPP中访问静态功能的指针



我有一个CPP类,其中定义了很少的方法。静态方法之一需要调用同一类的非静态方法。我不能使用"此"指针和静态功能中的"这个"指针进行此操作。

我需要在CPP中的静态方法中访问指向同一类的指针...有人可以帮助

具有静态函数为类的参考参数。示例:

struct Foo {
    void func() { }
    static void static_func(Foo& obj)
    {
        obj.func();
    }
};

用法:

Foo foo;
Foo::static_func(foo);

您可以使用Foo* obj参数。在这种情况下,您需要明显通过指针(Foo::static_func(&foo);(。

话虽这么说,您的功能看起来不应该是静止的。使其非静态。

假设类的任何实例都会做,为什么静态函数不能只创建自己的临时类实例?特别是如果有默认构造函数。例如,下面的代码正确编译:

class Circle
{
public:
    Circle(double centerX, double centerY, double radius);
    Circle() : Circle(0.0, 0.0, 1.0)  // unit circle by default
    {}
    inline double  getRadius()  { return radius; };
    inline double  getArea()    { return area; };
    static  double computePi();   // HERE
private:
    double   centerX, centerY, radius, area;
};
Circle::Circle(double centerX, double centerY, double radius)
    : centerX(centerX), centerY(centerY), radius(radius)
{
    area = 3.14159*radius*radius;
}
double Circle::computePi()  // static class function, no "this" allowed
{
    Circle   tmpC1;  // temporary instance here !
    Circle*  tmpThis = &tmpC1;
    double  radius = tmpThis->getRadius();
    double  area   = tmpThis->getArea();
    double  pi     = area / (radius*radius);
    return pi;
}

好吧,语义看起来有些毛茸茸,但也许在您自己的上下文中看起来更好。

最新更新