Java/C++中静态成员函数
2015-10-08 16:25
429 查看
一 Java中静态成员函数不能调用非静态的成员函数和非静态的成员变量。
示例:
main函数 是静态成员函数,所以不能调用非静态成员函数。
最近在看Java,在编译写书上一个例子时,由于书上的代码只有一部分,于是就自己补了一个内部类。结果编译时出现:No enclosing instance of type E is accessible. Must qualify the allocation with an enclosing instance of type E(e.g.
x.new A() where x is an instance of E). E指代我写的那个内部类。
根据提示,没有可访问的内部类E的实例,必须分配一个合适的内部类E的实例(如x.new A(),x必须是E的实例。)看着这句提示,我就纳闷了,我已经用new实例化了这个类,为什么还不行呢。
于是百度谷歌了一下相关资料。原来我写的内部类是动态的,也就是开头以public class开头。而主程序是public static class main。在Java中,类中的静态方法不能直接调用动态方法。只有将某个内部类修饰为静态类,然后才能够在静态类中调用该类的成员变量与成员方法。所以在不做其他变动的情况下,最简单的解决办法是将public
class改为public static class.
二 C++中静态成员函数不能调用非静态的成员函数和非静态的成员变量。
示例:
public class Cow { private double weight; public Cow() { } public Cow(double weight) { this.weight = weight; } class CowLeg { private double length; private String colorString; public CowLeg() { } public CowLeg(double length, String color) { this.length = length; this.colorString = color; } public void setLength(double length) { this.length = length; } public double getLength(double length) { return this.length; } public void setColor(String color) { this.colorString = color; } public String getColor() { return this.colorString; } public void info() { System.out.println("当前牛腿颜色是: " + this.colorString + ", 高: " + length); System.out.println("本牛腿所在奶牛重: " + weight); } } public void test() { CowLeg c1 = new CowLeg(1.12, "黑白相间"); c1.info(); } public static void main(String[] args) { // TODO Auto-generated method stub Cow cow = new Cow(378.9); cow.test(); CowLeg c1 = new CowLeg(1.12, "黑白相间");//*************出错************ } }
main函数 是静态成员函数,所以不能调用非静态成员函数。
最近在看Java,在编译写书上一个例子时,由于书上的代码只有一部分,于是就自己补了一个内部类。结果编译时出现:No enclosing instance of type E is accessible. Must qualify the allocation with an enclosing instance of type E(e.g.
x.new A() where x is an instance of E). E指代我写的那个内部类。
根据提示,没有可访问的内部类E的实例,必须分配一个合适的内部类E的实例(如x.new A(),x必须是E的实例。)看着这句提示,我就纳闷了,我已经用new实例化了这个类,为什么还不行呢。
于是百度谷歌了一下相关资料。原来我写的内部类是动态的,也就是开头以public class开头。而主程序是public static class main。在Java中,类中的静态方法不能直接调用动态方法。只有将某个内部类修饰为静态类,然后才能够在静态类中调用该类的成员变量与成员方法。所以在不做其他变动的情况下,最简单的解决办法是将public
class改为public static class.
二 C++中静态成员函数不能调用非静态的成员函数和非静态的成员变量。
#include <iostream> using namespace std; class Test { public: int a; static int m; Test() :a(5){} void print() { cout << a << endl; } static void printkk(){ cout << m << endl; print(); cout << a << endl; } }; int Test::m = 0; int main() { return 0; }
相关文章推荐
- 反斜杠在C/C++中的作用
- C++Primer第五版 练习11.19(解答)
- C++Primer第五版 练习11.17(解答)
- C++Primer第五版 练习11.16(解答)
- C++Primer第五版 11.3.1节练习
- C语言中char int转换问题
- c语言中的正则表达式regex.h
- C语言指针转换为intptr_t类型
- C++中break与continue的区别
- C语言指针操作
- C++中虚函数功能的实现机制
- (VC++) CString Format的用法
- c++泛型
- C语言输出100到999中所有的水仙花数
- c++中“::”和“->”
- C语言输出菱形
- C/C++ 笔试、面试题目大汇总(五)
- C/C++ 笔试、面试题目大汇总(四)
- C/C++ 笔试、面试题目大汇总(三)
- C/C++ 笔试、面试题目大汇总(二)