C++ 静止的并不是一成不变的

C++ 静止的并不是一成不变的,c++,static,C++,Static,我一直在做一个项目,我发现static关键字有时会有点混乱 我的项目使用图书馆的课程。我想做的是得到屏幕的高度,然后打印出来。一旦我的屏幕初始化,静态类(screen)应该始终具有相同的高度和宽度 下面是我一直尝试做的一个例子: 1.hpp级: #ifndef CLASS_H #define CLASS_H #include <iostream> #include "screen.hpp" class Class{ public: Class(){

我一直在做一个项目,我发现static关键字有时会有点混乱

我的项目使用图书馆的课程。我想做的是得到屏幕的高度,然后打印出来。一旦我的屏幕初始化,静态类(screen)应该始终具有相同的高度和宽度

下面是我一直尝试做的一个例子:

1.hpp级:

#ifndef CLASS_H
#define CLASS_H

#include <iostream>

#include "screen.hpp"

class Class{
public:
        Class(){
            std::cout << "Class: " << std::endl;
        }
        virtual ~Class(){}
};

#endif //CLASS_H
静电有什么我不懂的吗?我应该创建一个接口文件(带有名称空间接口)吗?请帮帮我

谢谢

Class classa(); //Will print the screen H in the constructor
它不能打印任何内容,因为它没有声明变量,因此不会调用构造函数。它声明一个不带参数的函数
classa
,并返回
Class


至于
静态的
,我在你引用的代码中没有看到任何静态的东西。

你可以用它获得你想要的效果

static int w, h;

但你的想法似乎不止这些。是否允许一次存在多个
屏幕
?您想让
之外的其他类(不要调用您的类
)访问
屏幕
?这可能是针对单例模式或嵌套类或其他对象的作业。

没有所谓的“静态类”

您可以有一个类的静态实例

class Foo
{
};

static Foo my_foo_;
或者您可以在类中使用静态方法

class Foo
{
public:
  static void Bar() {};
};

int main()
{
  Foo::Bar();
}
我怀疑你实际上是想做的


请注意,为了获得此功能,您实际上必须使用关键字
static
,这在发布的示例中从未使用过

我一定错过了什么。我在你的代码中找不到static关键字……呃,你实际上并没有在任何地方使用
static
,还有
classa()
是一个函数声明。而且,
构造函数不打印任何数字。关于
静态
的问题根本没有
静态
。投票以假问题结束。我想你的意思是它没有声明对象或实例,@jwismar:是的。那是个打字错误。
static int w, h;
class Foo
{
};

static Foo my_foo_;
class Foo
{
public:
  static void Bar() {};
};

int main()
{
  Foo::Bar();
}