需要第二组眼睛。我收到以下错误:
1>c:\users\thom\documents\cworkspace\barnaby\barnaby\timezone.h(15): error C2065: 'TransitionTimeInfo' : undeclared identifier
以下是我收到错误的代码行:
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){
这是我班级构造函数的行。该文件包含以下内容:
#include "stdafx.h"
这是stdafx.h的重要部分:
#include "targetver.h"
#include "barnaby.h"
#include "LeapSecondsInfo.h"
#include "p6types.h"
#include "Timezone.h"
#include "TransitionTimeInfo.h"
这是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;
};
更重要的是,如果我点击类型名称并点击F12(Visual C ++),它会将我带到此文件。
有什么想法吗?
感谢。
答案 0 :(得分:6)
更改包含的顺序:
#include "TransitionTimeInfo.h"
#include "Timezone.h"
Timezone.h
使用TransitionTimeInfo
但后面包含“TransitionTimeInfo.h”。
理想情况下,您应该始终遵循以下规则:
每个文件都应包含所需的所有头文件,而不是依赖它们通过其他文件间接包含。
因此,您应该在“Timezone.h”中包含“TransitionTimeInfo.h”。