我一直在做一个项目,我发现了static关键字有时可能是一种乱。静态...不是真的静态
我的项目使用的库ncurses的。我想要做的是获得我的屏幕的高度,然后打印它。一旦我的屏幕初始化,静态类(屏幕)应始终具有相同的高度和宽度。
这里是什么,我一直试图做一个例子:
class.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
screen.hpp:
#ifndef SCREEN_H
#define SCREEN_H
#include <curses.h>
#include <signal.h>
#include <curses.h>
class Screen{
public:
Screen();
virtual ~Screen();
void Init();
void Close();
int getW() const;
int getH() const;
private:
int w, h;
};
static Screen screen;
#endif // SCREEN_H
main.cpp中:
#include <iostream>
#include "screen.hpp"
#include "class.cpp"
int main(int argc, char** argv){
screen.Init();
screen.Close(); //I just wanted to set my H and W in screen
std::cout << "main: " << screen.getH() << std::endl;
Class classa(); //Will print the screen H in the constructor
return 0;
}
这是resul t:
iDentity:~$ g++ -Wall -g main.cpp screen.cpp class.cpp -lncurses
iDentity:~$ ./a.out
main: 24
Class: 0
iDentity:~$
有什么我不明白的静态?我应该创建一个接口文件(使用名称空间接口)吗?请帮帮我。
谢谢。
我必须失去了一些东西。我无法找到你的代码中的static关键字...... – jwismar 2011-06-03 16:06:55
呃,你没有实际使用'static'任何有... – bdonlan 2011-06-03 16:07:25
另外'Class classa();'是一个函数声明。 – 2011-06-03 16:07:56