您的位置:程序门 -> .net技术 -> vc.net



使用map时报错。 无法解析的外部符号 "private: static class std::map<class std::basic_string<char,struct……


[收藏此页] [打印本页]选择字色:背景色:字体:[][][]


使用map时报错。 无法解析的外部符号 "private: static class std::map<class std::basic_string<char,struct……[已结贴,结贴人:hindu]
发表于:2008-02-01 10:03:59 楼主
#include       "stdafx.h"  
#include       "globlewrapclass.h"  
#include       <map>  
#include       <string>  
#include       <iostream>  
#include       <iterator>  

using       namespace       std;  


class       globalwrap  
{  


public:  

//以下函数为成员数据读取函数  
static       string           program_name()       {       return       _program_name;       }  
static       string           version_stamp()       {       return       _version_stamp;       }  
static           int       version_number()       {       return       _version_number;       }  
static           int       tests_run()       {       return       _tests_run;       }  
static           int       test_passed       ()           {       return       _tests_passed;       }  

//以下函数为设置成员数据  

//初始化map,显示map  
void       initmap();  
void       didplaymap();  

//一下函数为成员数据设置函数  
private:  
static           string           _program_name;  
static           string       _version_stamp;  
static       int           _version_number;  
static       int           _tests_run;  
static       int           _tests_passed;  

//以下部分是为了解决4.4中的问题。  
enum       ulevel           {       beginner,       intermediate,       advanced,       guru       };  
static       map   <       string,       enum       ulevel           >       _user_level_map;  

};  

void       globalwrap::initmap()  
{  
_user_level_map[       "beginner"       ]       =       beginner       ;  
_user_level_map[       "intermediate"       ]       =       intermediate       ;  
_user_level_map[       "advanced"       ]       =       advanced       ;  
_user_level_map[       "guru"       ]       =       guru       ;  
}  

void       globalwrap::didplaymap()  
{  
if(       _user_level_map.empty()       )      
initmap();  
map   <       string,       ulevel       >   ::iterator       it       =       _user_level_map.begin();  

while       (       it       !=       _user_level_map.end()       )  
{  
cout   <   <it->   first   <   <it->   second;  
cout   <   <endl;  
}  
}  


essentialc++practisefor4.3       error       lnk2001:       无法解析的外部符号       "private:       static       class       std::map   <class       std::basic_string   <char,struct       std::char_traits   <char>   ,class       std::allocator   <char>       >   ,enum       globalwrap::ulevel,struct       std::less   <class       std::basic_string   <char,struct       std::char_traits   <char>   ,class       std::allocator   <char>       >       >   ,class       std::allocator   <struct       std::pair   <class       std::basic_string   <char,struct       std::char_traits   <char>   ,class       std::allocator   <char>       >       const       ,enum       globalwrap::ulevel>       >       >       globalwrap::_user_level_map"       (?_user_level_map@globalwrap@@0v?$map@v?$basic_string@du?$char_traits@d@std@@v?$allocator@d@2@@std@@w4ulevel@globalwrap@@u?$less@v?$basic_string@du?$char_traits@d@std@@v?$allocator@d@2@@std@@@2@v?$allocator@u?$pair@$$cbv?$basic_string@du?$char_traits@d@std@@v?$allocator@d@2@@std@@w4ulevel@globalwrap@@@std@@@2@@std@@a)  


essentialc++practisefor4.3       fatal       error       lnk1120:       1       个无法解析的外部命令  
发表于:2008-02-01 10:05:511楼 得分:0
编译环境是vs   2003
发表于:2008-02-01 15:15:252楼 得分:0
static               map       <               string,               enum               ulevel                       >               _user_level_map;      
定义呢?
发表于:2008-02-12 15:10:313楼 得分:0
#include       "stdafx.h"  
……  
using       namespace       std;  

class       globalwrap  
{  
public:  
……  
private:  
//以下部分是为了解决4.4中的问题。  
enum       ulevel           {       beginner,       intermediate,       advanced,       guru       };  
static       map   <       string,       enum       ulevel           >       _user_level_map;  

};  
map       <string,               enum               ulevel>               globalwrap::_user_level_map;  

还要怎么定义呢?

编译提示:error       c2371:       “_user_level_map”       :       重定义;不同的基类型  
很纳闷,为什么map       <string,               enum               ulevel>               globalwrap::写到这个地方的时候,提示出map的成员函数(map是泛型算法中的),而不是globalwrap的成员函数。。。  
发表于:2008-02-12 19:17:244楼 得分:20
==〉在类外部定义

map       <string   ,enum     globalwrap::ulevel>               globalwrap::_user_level_map;      
因为它是静态字段
发表于:2008-02-15 16:40:045楼 得分:0
谢谢,已经解决。增加类外部定义:


快速检索

最新资讯
热门点击