首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

一个棘手的有关问题 !

2012-03-18 
一个棘手的问题 !!!我在VS2008下出现了一下错误,先给出代码:共有三个文件//

一个棘手的问题 !!!
我在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分钟内有效……

热点排行