读书人

一个棘手的有关问题 !

发布时间: 2012-03-18 13:55:39 作者: rapoo

一个棘手的问题 !!!
我在VS2008下出现了一下错误,先给出代码:共有三个文件
//==============================================文件1t.h
#ifndef t1_H
#define t1_H
#include "t.cpp"
#include <string>
typedef struct Land_Sky
{
const string Land = "甲乙丙丁戊己庚辛壬癸";
const string Sky = "子丑寅卯辰巳午未申酉戌亥";
}Land_Sky;
Land_Sky land_sky;

typedef struct WeekDay
{
string weekday; //从1901年1月1日开始,该天是星期二
int whichday;
string day;
}WeekDay;
typedef struct Animals
{
string animallist;
int AnimalsP;
string animal;
}Animals;
typedef struct NameofLunar
{
string NameListLand;
string NameListSky;
int LandP;
int SkyP;
string LunarName;
}NameofLunar;
typedef struct GregorianDate
{
string Year;
string Month;
string Day;
}GregorianDate;
//=========================================================公历

class Calendar
{
GregorianDate gregoriandate;
Animals animals;
NameofLunar LunarYear;
NameofLunar LunarMonth;
NameofLunar LunarDay;
WeekDay week_day;
public:
Calendar();
~Calendar();
bool IsLeapYear()const;
string WhichAniOfThisYear();
string WeekDayOfToday();
inline int ChangeYearToInt()const;
inline int ChangeMonthToInt()const;
inline int ChangeDayToInt()const;
void DropZeroOfDate();
string LunarNameOfYear();
string LunarNameOfMonth();
string LunarNameOfDay();
int TotalDayFromBegin()const;
void InputDate();
void Print()const;
void Operate();
};
#endif
//======================================================= 文件2 t.cpp
#include <iostream>
#include <string>
#include <time.h>
#include "t.h"

using namespace std;

Calendar::Calendar()
{
time_t now;
time(&now);
string t;
t = ctime(&now);
for(int i = 20;i < 24;i++)
gregoriandate.Year += t[i]; //当前公历年
for(int i = 0;i < 3;i++)
week_day.weekday += t[i]; //当前星期时间
for(int i = 4;i < 7;i++)
gregoriandate.Month += t[i]; //当前公历月
for(int i = 8;i < 10;i++)
gregoriandate.Day += t[i]; //当前公历日
LunarYear.LandP = LunarYear.SkyP = 0;
LunarMonth.LandP = LunarMonth.SkyP = 0;
LunarDay.LandP = LunarDay.SkyP = 0;
LunarYear.LunarName = "庚寅年";
LunarMonth.LunarName = "庚辰月";
LunarDay.LunarName = "丁未日";
animals.animal = "虎年";
week_day.weekday = "二三四五六日一";
animals.animallist = "鼠牛虎兔龙蛇马羊猴鸡狗猪";
LunarYear.NameListLand = land_sky.Land;
LunarYear.NameListSky = land_sky.Sky;
LunarMonth.NameListLand = land_sky.Land;
LunarMonth.NameListSky = land_sky.Sky;
LunarDay.NameListLand =land_sky. Land;
LunarDay.NameListSky = land_sky.Sky;
}
Calendar::~Calendar(){}
int Calendar::ChangeYearToInt()const
{
/*.................*/
}
int Calendar::ChangeMonthToInt()const
{
/*.................*/
}
int Calendar::ChangeDayToInt()const
{
/*.................*/
}
bool Calendar::IsLeapYear()const
{
/*.................*/
}
string Calendar::WhichAniOfThisYear()


{
/*.................*/
}
int Calendar::TotalDayFromBegin() const
{
/*.................*/
}
string Calendar::WeekDayOfToday()
{
/*.................*/
}
void Calendar::DropZeroOfDate()
{
/*.................*/
}
string Calendar::LunarNameOfYear()
{
/*.................*/
}
string Calendar::LunarNameOfMonth()
{
/*.................*/
}
string Calendar::LunarNameOfDay()
{
/*.................*/
}
void Calendar::InputDate()
{
/*.................*/
}
void Calendar::Print()const
{
/*.................*/
}
//=========================================================文件3 main.cpp
#include <iostream>
#include <stdlib.h>
#include "t.h"
#include "t.cpp"
using namespace std;

int main()
{
Calendar calendar;
calendar.Operate();
system("pause");
return 0;
}
结果出现了200多错误,弄了几个:
>g:\visual studio 2008\projects\calendar\calendar\t.cpp(8) : error C2653: “Calendar”: 不是类或命名空间名称
1>g:\visual studio 2008\projects\calendar\calendar\t.cpp(9) : error C4430: 缺少类型说明符 - 假定为 int。注意: C++ 不支持默认 int
1>g:\visual studio 2008\projects\calendar\calendar\t.cpp(15) : error C2065: “gregoriandate”: 未声明的标识符
1>g:\visual studio 2008\projects\calendar\calendar\t.cpp(15) : error C2228: “.Year”的左边必须有类/结构/联合
1> 类型是“'unknown-type'”
1>g:\visual studio 2008\projects\calendar\calendar\t.cpp(17) : error C2065: “week_day”: 未声明的标识符
1>g:\visual studio 2008\projects\calendar\calendar\t.cpp(17) : error C2228: “.weekday”的左边必须有类/结构/联合
1> 类型是“'unknown-type'”
1>g:\visual studio 2008\projects\calendar\calendar\t.cpp(19) : error C2065: “gregoriandate”: 未声明的标识符
1>g:\visual studio 2008\projects\calendar\calendar\t.cpp(19) : error C2228: “.Month”的左边必须有类/结构/联合
1> 类型是“'unknown-type'”
1>g:\visual studio 2008\projects\calendar\calendar\t.cpp(21) : error C2065: “gregoriandate”: 未声明的标识符
1>g:\visual studio 2008\projects\calendar\calendar\t.cpp(21) : error C2228: “.Day”的左边必须有类/结构/联合
1> 类型是“'unknown-type'”
1>g:\visual studio 2008\projects\calendar\calendar\t.cpp(22) : error C2065: “LunarYear”: 未声明的标识符
1>g:\visual studio 2008\projects\calendar\calendar\t.cpp(22) : error C2228: “.LandP”的左边必须有类/结构/联合
1> 类型是“'unknown-type'”
1>g:\visual studio 2008\projects\calendar\calendar\t.cpp(22) : error C2065: “LunarYear”: 未声明的标识符
1>g:\visual studio 2008\projects\calendar\calendar\t.cpp(22) : error C2228: “.SkyP”的左边必须有类/结构/联合
1> 类型是“'unknown-type'”
1>g:\visual studio 2008\projects\calendar\calendar\t.cpp(23) : error C2065: “LunarMonth”: 未声明的标识符
1>g:\visual studio 2008\projects\calendar\calendar\t.cpp(23) : error C2228: “.LandP”的左边必须有类/结构/联合
1> 类型是“'unknown-type'”
1>g:\visual studio 2008\projects\calendar\calendar\t.cpp(23) : error C2065: “LunarMonth”: 未声明的标识符
1>g:\visual studio 2008\projects\calendar\calendar\t.cpp(23) : error C2228: “.SkyP”的左边必须有类/结构/联合
1> 类型是“'unknown-type'”
1>g:\visual studio 2008\projects\calendar\calendar\t.cpp(24) : error C2065: “LunarDay”: 未声明的标识符
1>g:\visual studio 2008\projects\calendar\calendar\t.cpp(24) : error C2228: “.LandP”的左边必须有类/结构/联合
1> 类型是“'unknown-type'”
1>g:\visual studio 2008\projects\calendar\calendar\t.cpp(24) : error C2065: “LunarDay”: 未声明的标识符
1>g:\visual studio 2008\projects\calendar\calendar\t.cpp(24) : error C2228: “.SkyP”的左边必须有类/结构/联合
1> 类型是“'unknown-type'”
1>g:\visual studio 2008\projects\calendar\calendar\t.cpp(25) : error C2065: “LunarYear”: 未声明的标识符
1>g:\visual studio 2008\projects\calendar\calendar\t.cpp(25) : error C2228: “.LunarName”的左边必须有类/结构/联合


1> 类型是“'unknown-type'”
1>g:\visual studio 2008\projects\calendar\calendar\t.cpp(26) : error C2065: “LunarMonth”: 未声明的标识符
1>g:\visual studio 2008\projects\calendar\calendar\t.cpp(26) : error C2228: “.LunarName”的左边必须有类/结构/联合
1> 类型是“'unknown-type'”
1>g:\visual studio 2008\projects\calendar\calendar\t.cpp(27) : error C2065: “LunarDay”: 未声明的标识符
1>g:\visual studio 2008\projects\calendar\calendar\t.cpp(27) : error C2228: “.LunarName”的左边必须有类/结构/联合

而且我将头文件的各种包含情况都试了,还是不行,这不是第一次出现这种问题了.求高手解答;谢谢!!!!!!!!!




[解决办法]
#include "t.cpp" 去掉

[解决办法]
cpp是源文件,不能include
[解决办法]
有些是没有声明变量
有些是没有实例化对象
[解决办法]
源文件不要包含,包含会出现重复定义错误
[解决办法]
类在*.h里定义 文件名 t.cpp 改为t.h
[解决办法]
去掉t.h和main.cpp中的
#include "t.cpp" 这句

[解决办法]
在t.h里包含t.cpp, 在 t.cpp里包含t.h,这是个严重问题,
编译器只编译.cpp文件,并将包含的头文件就地展开, 在t.h里包含t.cpp就会出现循环!
[解决办法]
三言两语说不清楚,
楼主留个email……
我把对的给你mail过去……
15分钟内有效……

读书人网 >C++

热点推荐