我的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;
}
答案 0 :(得分:2)
您使用点.
运算符来访问非静态成员,而不是范围解析运算符::
int i = ms.i;
请注意以下作业
Singleton2 ms = singleton2();
制作单身人士的副本。您的singleton2()
会返回引用,因此您也可以将ms
作为参考:
Singleton2 &ms = singleton2();