需要第二组眼睛.我收到以下错误:
1>c:\users\thom\documents\cworkspace\barnaby\barnaby\timezone.h(15): error C2065: 'TransitionTimeInfo' : undeclared identifier
Run Code Online (Sandbox Code Playgroud)
这是我收到错误的代码行:
Timezone(std::vector<LeapSecondsInfo> &leapSecondsVector, std::vector<unsigned char> &localTimeTypes, std::vector<P6::UINT8> &stdWallIndicators, &std::vector<unsigned long> &transitionTimes, std::vector<TransitionTimeInfo> &transitionTimesInfo, std::vector<P6::UINT8> &utcLocalIndicators){
Run Code Online (Sandbox Code Playgroud)
这是我班级构造函数的行.该文件包含以下内容:
#include "stdafx.h"
Run Code Online (Sandbox Code Playgroud)
这是stdafx.h的重要部分:
#include "targetver.h"
#include "barnaby.h"
#include "LeapSecondsInfo.h"
#include "p6types.h"
#include "Timezone.h"
#include "TransitionTimeInfo.h"
Run Code Online (Sandbox Code Playgroud)
这里是TransitionTimeInfo.h:
class TransitionTimeInfo
{
public:
TransitionTimeInfo(long gmtOffset, bool daylightSavings, unsigned int abbreviationIndex){
setAbbreviationIndex(abbreviationIndex);
setDaylightSavings(daylightSavings);
setGmtOffset(gmtOffset);
}
virtual ~TransitionTimeInfo(void) {};
unsigned int getAbbreviationIndex(){
return abbreviationIndex;
}
void setAbbreviationIndex(unsigned int newVal){
abbreviationIndex = newVal;
}
bool isDaylightSavings(){
return daylightSavings;
}
void setDaylightSavings(bool newVal){
daylightSavings = newVal;
}
long getGmtOffset(){
return gmtOffset;
}
void setGmtOffset(long newVal){
gmtOffset = newVal;
}
private:
long gmtOffset;
bool daylightSavings;
unsigned int abbreviationIndex;
};
Run Code Online (Sandbox Code Playgroud)
更重要的是,如果我点击类型名称并按F12(Visual C++),它会将我带到此文件.
有任何想法吗?
谢谢.
更改包含的顺序:
#include "TransitionTimeInfo.h"
#include "Timezone.h"
Run Code Online (Sandbox Code Playgroud)
其后包含"TransitionTimeInfo.h" 的Timezone.h用途TransitionTimeInfo.
理想情况下,您应该始终遵循以下规则:
每个文件都应该包含它需要的所有头文件,而不是依赖它们通过其他文件间接包含它们.
因此,您应该在"Timezone.h"中包含"TransitionTimeInfo.h".