我有三个文件,一个主 .cpp 文件:
#include <stdio.h>
#include "myClass.h"
int main()
{
myClass mvar;
tryVar = 23; // why does this not work?
printf("%d ", mvar.readTryVar()); // This writes out 0, why??
return 0;
}
一个 myClass.cpp 文件
#include "myClass.h"
myClass::myClass(void)
{
}
myClass::~myClass(void)
{
}
void myClass::setTryVar()
{
tryVar = 23334;
}
int myClass::readTryVar()
{
return tryVar;
}
和一个 myClass.h 文件
#pragma once
static int tryVar;
class myClass
{
public:
myClass(void);
~myClass(void);
void setTryVar();
int readTryVar();
};
它们是非常简单的文件,但是我不明白为什么没有在 main 函数中设置静态变量,我需要通过 myClass 函数来设置它。
我认为我不太清楚“翻译单元”是如何创建的,我知道“包含”指令只是在实际编译之前将头文件的内容复制到 .cpp 文件中。那为什么不是静态变量可见吗?