1 #pragma once
2 #include "Durations.h"
3 #include "Guards.h"
4 #include
5
6 classCDuration7 {8 public:9 CDuration(void);10 ~CDuration(void);11
12 //自定义ID类型
13 using id = long;14 //别名标识记录类型
15 using counter =id;16
17 //记录结构体
18 structrec19 {20 size_t cbsize;21 time_t front;22 time_t back;23 longlen;24 CGuards::GuardsInfo guardsinfo;25 };26
27 //提交时间段记录
28 constrec submitInfo();29
30 voidsetStage(time_t front,time_t back);31 //时间长度,单位:分钟
32 longgetLength();33
34 CGuards* getGuards(CGuards*gurds);35 CDurations* getParent(CDurations*prt);36 CGuards* getGuards(void);37 CDurations* getParent(void);38
39 //重载比较运算符
40 bool operator==(CDuration& dur)const;41 bool operator!=(CDuration& dur)const{return !(*this==dur);}42 private:43 //辅助函数
44 const id getid()const;45 //自动分配有效id
46 voiddispatch_id();47
48 private:49 CDurations *parent;50 CGuards*guards;51 time_t start;52 time_t end;53 //自己的唯一标识
54 id unique_id;55
56 //id:按照出生顺序累加57 //存在的对象数目
58 staticcounter dur_count;59 staticid dur_max;60 };
以上是“Duration.h”
1 #pragma once
2 #include "Duration.h"
3 #include
4 usingstd::vector;5
6 classCDurations7 {8 public:9 CDurations(void);10 ~CDurations(void);11
12 size_t size()const;13 longgetLength();14
15 void append(CDuration&dur);16 void remove(CDuration&dur);17 voidclear();18
19 private:20 vectordurations;21
22 };
以上是“Durations.h”
程序比较大,互相 包含文件比较多,先不全部粘贴上来了。
以这些代码为例,编译就会出现错误,怎么改都消除不掉,不知是不是C11标准问题还是代码不规范导致的,请大神帮忙分析一下。
后续代码如果需要,我再粘上。
错误标识:
错误 283 error C2923: “std::vector”: 对于参数“_Ty”,“CDuration”不是有效的 模板 类型变量 d:\窗口程序\sitemanager\sitemanager\durations.h 20 1 SiteManager
错误 282 error C2065: “CDuration”: 未声明的标识符 d:\窗口程序\sitemanager\sitemanager\durations.h 20 1 SiteManager
错误 576 error C3867: “std::vector<_ty>::size”: 函数调用缺少参数列表;请使用“&std::vector<_ty>::size”创建指向成员的指针 d:\窗口程序\sitemanager\sitemanager\durations.cpp 15 1 SiteManager
...
错误数量太多,这里不一一复制了,就如上为例吧。