我目前正在将许多曾经在main()中的代码重新打包到Simulation类中.我在这个类的头文件中遇到编译错误.我正在使用gcc 4.2.1版进行编译.
// Simulation.h#ifndef SIMulATION_H#define SIMulATION_H#include <cstdlib>#include <iostream>#include <cmath>#include <string>#include <fstream>#include <set>#include <boost/multi_index_container.hpp>#include <boost/multi_index/hashed_index.hpp>#include <boost/multi_index/member.hpp>#include <boost/multi_index/ordered_index.hpp>#include <boost/multi_index/mem_fun.hpp>#include <boost/multi_index/composite_key.hpp> #include <boost/shared_ptr.hpp>#include <boost/tuple/tuple_comparison.hpp>#include <boost/tuple/tuple_io.hpp>#include "Parameters.h"#include "Host.h"#include "rng.h"#include "Event.h"#include "Rdraws.h"typedef multi_index_container< // line 33 - first error boost::shared_ptr< Host >,indexed_by< hashed_unique< const_mem_fun<Host,int,&Host::getID> >,// 0 - ID index ordered_non_unique< tag<age>,const_mem_fun<Host,&Host::getAgeInY> >,// 1 - Age index hashed_non_unique< tag<household>,&Host::getHousehold> >,// 2 - Household index ordered_non_unique< // 3 - Eligible by age & household tag<aeh>,composite_key< Host,&Host::getAgeInY>,bool,&Host::isEligible>,&Host::getHousehold> > >,ordered_non_unique< // 4 - Eligible by household (all single adults) tag<eh>,ordered_non_unique< // 5 - Household & age tag<ah>,&Host::getHousehold>,&Host::getAgeInY> > > > // end indexed_by > HostContainer; typedef std::set<int> HHSet;class Simulation{ public: Simulation( int sID ); ~Simulation(); // MEMBER FUNCTION PROTOTYPES voID runDemSim( voID ); voID runEpIDSim( voID ); voID ageHost( int ID ); int calcPartnerAge( int a ); voID executeEvent( Event & te ); voID killHost( int ID ); voID pairHost( int ID ); voID partner2Hosts( int ID1,int ID2 ); voID fledgeHost( int ID ); voID birthHost( int ID ); voID calcSI( voID ); double beta_ij_h( int ai,int aj,int s ); double beta_ij_nh( int ai,int s ); private: // SIMulATION OBJECTS double t; double outputStrobe; int IDCtr; int hholdCtr; int simID; RNG rgen; HostContainer allHosts; // shared_ptr to Hosts - line 102 - second error HHSet allHouseholds; int numInfecteds[ INIT_NUM_AGE_CATS ][ INIT_NUM_STYPES ]; EventPQ currentEvents; // STREAM MANAGEMENT voID writeOutput(); voID initOutput(); voID cloSEOutput(); std::ofstream agedistStream; std::ofstream agedistTStream; std::ofstream hhdistStream; std::ofstream hhdistTStream; std::string agedistfile; std::string agedistTfile; std::string hhdistfile; std::string hhdistTfile;};#endif
我希望其他文件与这个问题不太相关.当我编译时
g++ -g -o -c a.out -I /Applications/boost_1_42_0/ Host.cpp Simulation.cpp rng.cpp main.cpp Rdraws.cpp
我明白了
Simulation.h:33: error: expected initializer before '<' tokenSimulation.h:102: error: 'HostContainer' does not name a type
然后是一堆与无法识别HostContainer相关的其他错误.
看起来我对HostContainer的所有正确的Boost #includes都有所了解.还有什么可能出错?
我将非常感谢有关我的代码的即时建议,疑难解答提示和其他建议.我的计划是创建一个“HostContainer.h”文件,其中包含定义其标记的typedef和结构,类似于我在EventPQ容器的“Event.h”中所做的.我认为这是合法的,良好的形式.
解决方法 multi_index_container似乎在名称空间提升中.所以你必须使用boost :: multi_index_container显式引用它,或者使用声明/指令.HostContainer错误是由第一个错误引起的.通常,您应该按顺序解决C编译错误.
总结以上是内存溢出为你收集整理的c – 头文件中“”标记之前的预期初始值设定项”全部内容,希望文章能够帮你解决c – 头文件中“”标记之前的预期初始值设定项”所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)