当我有多个.cpp文件时,如何制作像java中的静态方法一样使用的静态方法?
在java中,您可以使用MyClass name = new MyClass()来引用另一个类;当你在任何其他文件中调用时,这个类中的每个变量都是相同的。
我似乎很难通过参考MyClass&在要使用该类的每个函数中的名称。
有没有办法在.cpp文件的顶部定义MyClass名称,而不会在内存中创建该对象的全新实例并消除所有进度,例如,如果您尝试创建一个简单的计数器,主类会告诉计数类增加,可见性类将从计数类中获取计数数并将其打印到屏幕上。现在这很简单,因为你可以将计数类传递给可见性,但是如果你有20多个方法,那么就很难跟踪。
我对静态或引用并不熟悉,而且我环顾四周并看到了“命名空间”,但我不确定在哪里定义它,或者它是否是我甚至需要的。
提前致谢
示例Java代码:
public class Foo{
private static int counter = 0;
public int getCounter(){
return counter;
}
public void incrCounter(){
counter+=1;
}
}
public class MainProg{
public static void main(String[] args){
Foo foo = new Foo();
Display disp = new Display();
foo.incrCounter();
foo.incrCounter();
disp.displayCounter();
}
}
public class Display{
Foo foo = new Foo();
public void displayCounter(){
foo.incrCounter();
System.out.println(foo.getCounter());
}
}
这应打印出“3”
答案 0 :(得分:2)
在C ++中,在Java中使用范围解析运算符::
而不是.
。你可以调用这样的静态方法:
在标题中:
class MyClass {
public:
static int myPrivateStaticVar;
static void myStaticMethod();
};
在cpp文件中:
#include "myfile.h"
#include <iostream>
using namespace std;
int MyClass::myPrivateStaticVar = 123;
void MyClass::myStaticMethod() {
cerr << "hello, world! " << myPrivateStaticVar << endl;
}
int main() {
MyClass::myStaticMethod();
}
您的静态方法myStaticMethod
需要在MyClass
类中公开。
答案 1 :(得分:0)
在Java中,您可以根据需要访问其他任何类中的类,只要变量是静态的,您访问的类中的值将始终相同。
你的意思是,就像一个全局变量?您可以声明这样的全局变量:
extern int foo;
你需要一个定义,它是这样的:
int foo = 42;
如果将声明放入需要的任何地方的头文件中,声明将会正常工作,定义应该放在一个源文件中。