非静态成员引用必须与特定对象相对
问题解决:
类的成员有两种:静态成员和实例成员(包括实例和函数)。
实例成员的存储空间属于具体的实例,不同实例(对象)的同名成员拥有不同的存储空间;
静态成员的存储空间是固定的,与具体的实例(对象)无关,被该类的所有实例共享。
访问静态成员可以用ClassName::MemberName
,也可以用ClassName.MemberNme
,但最好用前者,因为很容易就可以判定成员是静态成员。
访问实例成员只能用ClassName.MemberName
,不能用ClassName::MemberName
.
本例中就是因为用ClassName::MemberName
访问实例变量出错。
所以解决方法是:将以上类的成员函数print声明为static。或者函数调用时用ClassName.MemberName
的方式