如何从其他方法访问静态变量?

时间:2014-09-09 14:03:24

标签: c++ variables static

是否可以从myVar

访问变量foo2()
struct A {
    void foo() {
        static int myVar;
    }

    void foo2() {
        // can I access A::foo::myVar from here ??
    }
};

谢谢!

的Massimo

4 个答案:

答案 0 :(得分:4)

您可以从函数返回对它的引用:

int& foo() {
    static int myVar;
    return myVar;
}

void foo2() {
    std::cout << foo() << std::endl;
}

请注意,您的问题为什么需要访问此变量并不清楚。对于你想要解决的任何问题,可能会有更好的解决方案。

答案 1 :(得分:3)

不,myVar只是foo()中的有效符号。如果您想从其他功能访问它,请将其提升到类中,如下所示。

struct A {
    static int myVar;

    void foo() {
        A::myVar;
    }

    void foo2() {
        A::myVar;
    }
};

答案 2 :(得分:0)

不,你不能在另一个函数中访问myVar变量。如果你将myVar作为结构数据成员,那会更好。

struct A {
    static int myVar;

    void foo() {

    }

    void foo2() {

    }
};

答案 3 :(得分:0)

您无法访问在其他方法体中声明的局部变量。所以答案是否定的,将变量全局放到类中,然后就可以访问