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

神奇的错误-vector的使用

2012-08-16 
神奇的异常--vector的使用今天在使用vector的时候遇到一个编译错误,错误是发生在连接的时候错误如下:Error

神奇的异常--vector的使用
今天在使用vector的时候遇到一个编译错误,错误是发生在连接的时候

错误如下:

Error8error LNK2001: unresolved external symbol "public: static class std::vector<class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> >,class std::allocator<class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > > > ZACT_CLS::vec" (?vec@ZACT_CLS@@2V?$vector@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@V?$allocator@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@2@@std@@A)PRCLACT.obj


Error9fatal error LNK1120: 1 unresolved externalsC:\Trunk\debug\p_zdll32.dll1


现在的情况是我在函数里面定义一个vector的然后再使用它进行push_back的时候是正常的,是不会报错的。但是当我把定义移到一个类里面,然后再在这个函数里面使用push_back就要报错了,纠结半天不知道什么原因,求教了.

下面是这个类的定义:

[code=C/C++][/code]
struct ZACT_CLS{
static ZACT* mnew();
static int read( P_ZFILE File, FP_READFUNC ReadFunc,
long Version, void* Parent, CLASSDATA* PClass, int Change,
void** Return );
static long count( PC_CLASSDATA Class,const void* Parent,
PC_CLASSDATA PClass, int Action );
static void write( P_ZFILE, void*, int );
static void dbrowin( ABUF* Buffer );
static int unchange( void * Act, int Action );
static void *dt_get_real( CLASSDATA* Class,const void* Act, int* Support );
static void makenew( void * Act );
static void *parent( const CLASSDATA * Class, const void* Act );
static CLASSDATA *parclass( const CLASSDATA * Class, const void* Act,
const CLASSDATA * PrevClass );
static ZTYPE status( void* Act );
static int zap( void* Act );
static void *move(PC_CLASSDATA Class,const void* Parent,P_CLASSDATA PClass,
const void* Act, long Move, int Code );
static void *connect( CLASSDATA * Class, void* Act, void* Reference,
int After, void* Parent, CLASSDATA* PClass, int Action );
static void disconnect( CLASSDATA * Class, void* Act, int Action );
static void* clone( const void* Act, int Action );
static int isactnull( const void * Act );
static long row( const CLASSDATA * Class, const void* Act, int Action );
static int add_verify( CLASSDATA* Class, void* Act, void* Parent,
CLASSDATA* PClass, int After, void* Reference,
int Action, int* Reasons );
static int dbrowout( void* Buffer );
static void stowname( GDO* Name, int Action );
static GDO* getname( int Action );
static void change( void* Act, int Action );
static void clear_codes( ZACT* Act );
static void prReOrder( ZGENER* Version, ZACT* Act );
static void *seek( CLASSDATA * Class, void * Parent,
CLASSDATA* PClass, GDO * Key, int Mode, int Action );
static int newcode( ZACT* Activity, CDLST** pCdPtr, int Number, CODE* Code,
CATEGORY* Cat, int Connected, int CheckOnly );
static long gdt( DVALUE* DispValue );
static int assign( void* Activity, CLASSDATA * AClass, void* Value,
CLASSDATA * VClass, void* Index, const CLASSDATA * IClass,
int Action );
static GDO* dt_value( long DataType, void* Activity );
static CLASSDATA* linked_class( CLASSDATA* Class, void* Activity,
CLASSDATA* PrevClass, int Action );
static void *dt_base_support( long DataType, void* Item, CLASSDATA** Class );
static long dt_access( void* Activity, void* Value, CLASSDATA* VClass,
void* Index, CLASSDATA* IClass, void** CItem,
CLASSDATA** CClass );
static int zap_verify( CLASSDATA* Class, void *Activity, int Action );
static int zunloadDur( long Type, ZACT* Act, DBDUR* dbDur );
static void *link( const void * Activity, const CLASSDATA * ChildClass,
int Flavor, int* Offset );
static int range( const void * Activity, long* Start, long* End, long* Target );
static int SeqnoChange( void* Buffer );
static int dt_support( const CLASSDATA * Class, long DataType, int Action );


static CLASSDATA *childclass( const void * Activity, const CLASSDATA * PrevClass );
static int edit_verify( CLASSDATA* Class, long DataType, void *Activity );
static void prAddExtensionFields( ZACT* Activity );
static CLASSDATA *prClAct();

static void prClActHookUp( void );
static CLASSDATA ClassData;

static long *ClassName;
static long *MemberName;
static CLASSDATA *ClassResource, *ClassPool;
static AIU *ActsInUse;
static ACOPY *ListOfCopies;
static NAMECHANGE *NameChanges;
static vector<string> vec;//当我在这个地方定义的时候就出现了那个编译错误
static int ActNameChange( void* Buffer );

static int NoCodes;

static CLASSDATA *ClassVersion, *ClassCAccount, *ClassWorkPack, *ClassActExt,
*ClassGMember, *ClassSGroup, *ClassProject, *ClassPrjCat,
*ClassSet, *ClassCat, *ClassCode, *ClassCalendar,
*ClassDClass, *ClassDV;

static CLASSDATA *Children[7];
static CLASSDATA *ControlledChildren[7];
static CLASSDATA *ChangeChildren[4];
};


下面试这个函数的定义:
[code=C/C++][/code]

int ZACT_CLS::ActNameChange( void* Buffer )
{
  static NAMECHANGE *ChangeList = 0;
  //static vector<string> vec;-----当我在这个地方定义的时候编译没有问题

  for (;;) {
  if (ChangeList)
  ChangeList = ChangeList->prev;
  else
  if (NameChanges)
  for (ChangeList = NameChanges; ChangeList->next;
  ChangeList = ChangeList->next);
  if (!ChangeList) return 0;
  if ( !(ChangeList->activity->sch.type & 0x18)) {
  register ACTSCH *act;
  register VERSCH *ver;

  act = &ChangeList->activity->sch;
  GetLStr( ChangeList->future ? ChangeList->future->oldname : act->name,
  BUFP->Name, BUFP->Name + 28 );
ZACT_CLS::vec.push_back(BUFP->Name);//在这个地方使用
  GetLStr( ChangeList->oldname, BUFP->OldName, BUFP->OldName + 28 );
  ver = act->version;
  BUFP->Version = ver->version;
  GetLStr( ver->project->name, BUFP->Project, BUFP->Project + 36 );
  /* return 1;*/
  }
  }
 return 1;
}

麻烦哪位帮忙看下,谢谢!

[解决办法]
你的这个定义使用了std的命名空间了么?还是使用了什么std::???
[解决办法]
类静态成员变量,需要在类外定义

热点排行