1 #pragma once 2 #include "Durations.h" 3 #include "Guards.h" 4 #include <ctime> 5 6 class CDuration 7 { 8 public: 9 CDuration(void); 10 ~CDuration(void); 11 12 //自定义ID类型 13 using id = long; 14 //别名标识记录类型 15 using counter = id; 16 17 //记录结构体 18 struct rec 19 { 20 size_t cbsize; 21 time_t front; 22 time_t back; 23 long len; 24 CGuards::GuardsInfo guardsinfo; 25 }; 26 27 //提交时间段记录 28 const rec submitInfo(); 29 30 void setStage(time_t front,time_t back); 31 //时间长度,单位:分钟 32 long getLength(); 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 void dispatch_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 static counter dur_count; 59 static id dur_max; 60 };
以上是“Duration.h”
1 #pragma once 2 #include "Duration.h" 3 #include <vector> 4 using std::vector; 5 6 class CDurations 7 { 8 public: 9 CDurations(void); 10 ~CDurations(void); 11 12 size_t size()const; 13 long getLength(); 14 15 void append(CDuration& dur); 16 void remove(CDuration& dur); 17 void clear(); 18 19 private: 20 vector<CDuration> durations; 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
...
错误数量太多,这里不一一复制了,就如上为例吧。