当前位置: 首页 > 知识库问答 >
问题:

C++:非类上下文中的静态关键字?[副本]

奚昌胤
2023-03-14

静态在下面有意义吗(我来自Java背景)?它会编译,但惯例/标准是什么?

#ifndef FUNC_H
#define FUNC_H

int func(const int& x, const int& y);

//cache frequently used values
const static int a = func(2, 0);
const static int b = func(3, 0);

#endif // FUNC_H

共有1个答案

邹禄
2023-03-14

在这样的上下文中,statice关键字表示文件范围,就像C中的一样。
可能不是您想要的公共头。

您想要的可能是extern,在头文件中:

extern const int a;
extern const int a;

它将声明两个全局变量。
然后您将需要一个定义,在某个.cpp文件中:

const int a = 42;
const int b = 43;
 类似资料:
  • 问题内容: 这个问题已经在这里有了答案 : 7年前关闭。 可能重复: 为什么我会得到“无法从静态上下文引用的非静态变量”? 这是代码 错误说: 非静态类 Node 不能从静态上下文中引用 为什么不应该在main()方法中引用Node类? 问题答案: Java中的非静态嵌套类包含对父类 实例 的隐式引用。因此,要实例化a ,您还需要具有一个实例。在静态上下文(主要方法)中,没有要引用的实例。因此,编

  • 我有以下代码: 当我尝试编译它时,会出现以下错误: 因此,我尝试使dbConnect静态如下:

  • 问题内容: 当尝试从另一个类中调用一个方法时,我的方法出现错误 说非静态字符串不能从静态上下文中引用。变量不是静态的,但是我仍然有这个问题吗? 我现在的主程序大块(很抱歉地方的草率编码) InfixToPostfixParens的代码 问题答案: 您的代码与以下代码(编译)有何不同?

  • 问题内容: 我有一群学生。首先,我想按标记对它们进行分组。然后,我想进一步将这些集合归为同名学生。 我收到一个错误消息, 非静态方法不能从静态上下文中引用。 是。我非常清楚,没有实例就无法引用非静态方法。但是,对于所有这些流操作,我对真正出了什么问题感到有些困惑。 而不是如何解决这个问题;我真的很想知道这是怎么回事。您的任何意见表示赞赏! 因为如果我写下面的分组是完全有效的; 这是我的Studen

  • 本文向大家介绍Java中的静态关键字,包括了Java中的静态关键字的使用技巧和注意事项,需要的朋友参考一下 静态修饰符 静态变量 在静态关键字用于创建将独立存在的类创建的所有实例变量。无论类的实例数量如何,静态变量只有一个副本存在。 静态变量也称为类变量。局部变量不能声明为静态。 静态方法 static关键字用于创建将独立于为该类创建的任何实例存在的方法。 静态方法不使用定义它们的类的任何对象的任

  • 可能重复: 为什么我得到“非静态变量不能从静态上下文引用”? 这是代码 错误说: 不能从静态上下文引用非静态类节点 为什么我不应该在main()方法中引用Node类?