不是类或命名空间

时间:2012-09-12 10:16:28

标签: c++

我的C ++有点生疏。任何人都可以在访问i时看到为什么我在main()中看到“不是类或命名空间”编译时错误。

#include <iostream>

using namespace std;

class Singleton2 {
    Singleton2(){
        i = 0;
    }
public:
    int i;

    friend Singleton2 & singleton2();
};

Singleton2 & singleton2(){
    static Singleton2 ms;

    return ms;
}

int main() {
    Singleton2 ms = singleton2();
    int i = ms::i;              // error: `ms' is not a class or namespace
    cout << i << endl;
}

1 个答案:

答案 0 :(得分:2)

您使用点.运算符来访问非静态成员,而不是范围解析运算符::

int i = ms.i;

请注意以下作业

Singleton2 ms = singleton2();

制作单身人士的副本。您的singleton2()会返回引用,因此您也可以将ms作为参考:

Singleton2 &ms = singleton2();