gpt4 book ai didi

C++ 静态方法(在不同的类中)(如 Java 的)

转载 作者:塔克拉玛干 更新时间:2023-11-03 06:56:06 24 4
gpt4 key购买 nike

当我有多个 .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”

最佳答案

在 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 类中公开。

关于C++ 静态方法(在不同的类中)(如 Java 的),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9594365/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com