首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用tr1::regex时链接器错误

使用tr1::regex时链接器错误
EN

Stack Overflow用户
提问于 2010-05-18 20:06:04
回答 2查看 3.7K关注 0票数 2

我有一个使用tr1::regex的程序,它在编译时会给我提供非常冗长的链接器错误。

以下是我的头文件MapObject.hpp:

代码语言:javascript
复制
#include <iostream>
#include <string>
#include <tr1/regex>
#include "phBaseObject.hpp"
using std::string;

namespace phObject
{
    class MapObject: public phBaseObject
    {
        private:
            string color;  // must be a hex string represented as "#XXXXXX"
            static const std::tr1::regex colorRX;  // enforces the rule above
        public:
            void setColor(const string&);
        (...)
    };
}

以下是我的实现:

代码语言:javascript
复制
#include <iostream>
#include <string>
#include <tr1/regex>
#include "MapObject.hpp"
using namespace std;


namespace phObject
{
    const tr1::regex MapObject::colorRX("#[a-fA-F0-9]{6}");

    void MapObject::setColor(const string& c)
    {
        if(tr1::regex_match(c.begin(), c.end(), colorRX))
        {
            color = c;
        }
        else cerr << "Invalid color assignment (" << c << ")" << endl;
     }

     (...)
}

现在说的是错误:

max@max-desktop:~/Desktop/Development/CppPartyHack/PartyHack/lib$ g++ -Wall -std=c++0x MapObject.cpp /tmp/cce5gojG.o:在函数std::tr1::basic_regex<char, std::tr1::regex_traits<char> >::basic_regex(char const*, unsigned int)': MapObject.cpp:(.text._ZNSt3tr111basic_regexIcNS_12regex_traitsIcEEEC1EPKcj[std::tr1::basic_regex<char, std::tr1::regex_traits<char> >::basic_regex(char const*, unsigned int)]+0x61): undefined reference tostd::tr1::basic_regex >::_M_compile()中 /tmp/cce5gojG.o:函数bool std::tr1::regex_match<__gnu_cxx::__normal_iterator<char const*, std::basic_string<char, std::char_traits<char>, std::allocator<char> > >, char, std::tr1::regex_traits<char> >(__gnu_cxx::__normal_iterator<char const*, std::basic_string<char, std::char_traits<char>, std::allocator<char> > >, __gnu_cxx::__normal_iterator<char const*, std::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::tr1::basic_regex<char, std::tr1::regex_traits<char> > const&, std::bitset<11u>)': > >,std::tr1::regex_match<__gnu_cxx::__normal_iterator,::MapObject.cpp:(.text._ZNSt3tr111regex_matchIN9__gnu_cxx17__normal_iteratorIPKcSsEEcNS_12regex_traitsIcEEEEbT_S8_RKNS_11basic_regexIT0_T1_EESt6bitsetILj11EE[bool std::tr1::regex_match<__gnu_cxx::__normal_iterator<char const*, std::basic_string<char, std::char_traits<char>, std::allocator<char> > >, char, std::tr1::regex_traits<char> >(__gnu_cxx::__normal_iterator<char const*, std::basic_string<char, std::char_traits<char>, std::allocator<char> > >, __gnu_cxx::__normal_iterator<char const*, std::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::tr1::basic_regex<char, std::tr1::regex_traits<char> > const&, std::bitset<11u>)]+0x53): undefined reference to> >(__gnu_cxx::__normal_iterator,std::MapObject.cpp:(.text._ZNSt3tr111regex_matchIN9__gnu_cxx17__normal_iteratorIPKcSsEEcNS_12regex_traitsIcEEEEbT_S8_RKNS_11basic_regexIT0_T1_EESt6bitsetILj11EE[bool std::tr1::regex_match<__gnu_cxx::__normal_iterator<char const*, std::basic_string<char, std::char_traits<char>, std::allocator<char> > >, char, std::tr1::regex_traits<char> >(__gnu_cxx::__normal_iterator<char const*, std::basic_string<char, std::char_traits<char>, std::allocator<char> > >, __gnu_cxx::__normal_iterator<char const*, std::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::tr1::basic_regex<char, std::tr1::regex_traits<char> > const&, std::bitset<11u>)]+0x53): undefined reference to> >,__gnu_cxx::__normal_iterator::分配器>,__gnu_cxx::__normal_iterator::分配器> >,分配器,分配器>> >&,std::tr1::basic_regex > const&,std::bitset<11u>)‘ collect2: ld返回1个退出状态

除了刚开始的undefined reference to std::tr1::basic_regex之外,我真的不能对此做出正面或反面判断。有人知道怎么回事吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2010-05-18 20:26:34

Regex对C++0x的支持是不完整的,TR1不支持Regex,参见C++0x/TR1的实现状态页

Boost提供了一种替代的TR1实现以及它所基于的原始图书馆

票数 1
EN

Stack Overflow用户

发布于 2013-03-05 09:31:35

答案是,即使提供了标头,也没有提供一些方法。

人们可以从Georg的回答中推断出这一点,但在考虑并编码了大约100行之后,假设这个漂亮的库实际上是提供的,人们可能会觉得太累了,没有任何进一步的推论了。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2860722

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档