我有一个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;
}
好吧,语义看起来有些毛茸茸,但也许在您自己的上下文中看起来更好。