当前位置:  技术问答>linux和unix

关于模板实例化和STL::map

    来源: 互联网  发布时间:2016-12-16

    本文导语:  我有一个类定义如下: template class EntityDatabase { public:     typedef std::map container;//错误相关的地方     // --------------------------------------------------------------------     //  The inner iterator class, used to iterate through...

我有一个类定义如下:
template
class EntityDatabase
{
public:

    typedef std::map container;//错误相关的地方
    // --------------------------------------------------------------------
    //  The inner iterator class, used to iterate through the database.
    // --------------------------------------------------------------------
    class iterator : public container::iterator
    {
    public:

        // --------------------------------------------------------------------
        // NOTE: the constructors are needed as a result of VC6 sucking.
        // Have I mentioned that VC6 sucks yet?
        // --------------------------------------------------------------------
        iterator() {};  // default constructor
        iterator( const container::iterator& p_itr ) // copy constructor
        {
            container::iterator& itr = *this; //报错的地方
            itr = p_itr;
        }

        // --------------------------------------------------------------------
        //  "dereferences" the iterator to return a reference to the
        //  object that it points to.
        // --------------------------------------------------------------------
        inline datatype& operator*()
        {
            container::iterator& itr = *this; // also needed because VC6 sucks
            return itr->second;
        }

        // --------------------------------------------------------------------
        //  the "pointer-to-member" operator, which will allow you to use it on
        //  iterators like this: itr->Function();
        // --------------------------------------------------------------------
        inline datatype* operator->()
        {
            container::iterator& itr = *this; // also needed because VC6 sucks
            return &(itr->second);
        }
    };  // end iterator inner class


    // --------------------------------------------------------------------
    //  returns an iterator pointing to the first item
    // --------------------------------------------------------------------
    inline static iterator begin()
    {
        return iterator( m_map.begin() );
    }
。。。。。。

}

为什么编译报如下错?
/home/chacha/MUD/Demos/Chapter08/Demo08-01/SimpleMUD/EntityDatabase.h|46|error: need ‘typename’ before ‘SimpleMUD::EntityDatabase::container::iterator’ because ‘SimpleMUD::EntityDatabase::container’ is a dependent scope|
/home/chacha/MUD/Demos/Chapter08/Demo08-01/SimpleMUD/EntityDatabase.h|46|error: ISO C++ forbids declaration of ‘p_itr’ with no type|
。。。。。。

用的是code::blocks    gcc 4.5

|
template是模板声明,声明完后T就相当于一个参数类型(int,double。。),
可以这么简单的理解,在以后的代码中,T将被置换成你传给类的参数类型
EntityDatabase 里面所有的T会被替换成int。

    
 
 

您可能感兴趣的文章:

  • c++模板(template)常见用法代码实例
  • 有关GCC的模板实例化
  • smarty模板局部缓存实例教程
  • C#模板方法模式(Template Method Pattern)实例教程
  • C++模板特例化应用实例
  • C++函数模板与类模板实例解析
  • 用模板的方式创建守护进程代码实例
  • ThinkPHP模板替换与系统常量及应用实例教程
  • C#.NET采用HTML模板发送电子邮件完整实例
  • ThinkPHP跳转页success及error模板实例教程
  • thinkphp模板自定义标签实例教程
  • CodeIgniter模板引擎使用实例
  • C++可变参数的函数与模板实例分析
  • JAVA velocity模板引擎使用实例
  • C++ STL标准模板库类String成员详细列表参考及示例代码
  • linux下用c语言写的程序,其中可以使用STL模板吗?先谢谢各位
  • STL 标准模板库 uSTL
  • uclinux上如何使用标准模板库STL?
  •  
    本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
    本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • c++模板(Template)介绍及模板参数中包含模版
  • PHP模板引擎 费尔模板引擎
  • c++通用模板类(template class)定义实现详细介绍
  • Destoon模板怎么制作?destoon模板制作简单教程
  • C++可变参数模板(variadic template)详细介绍及代码举例
  • 关于模板类局部特化的错误:模板参数太少。
  • c++模板(template)中的class和typename关键字异同比较
  • Java模板引擎 Snippetory
  • 网页模板引擎 Jenner
  • 多脚本语言模板引擎 Tenjin
  • STL 标准模板库 uSTL iis7站长之家
  • destoon公司主页模板风格的添加方法
  • 费尔PHP模板引擎
  • JavaScript模板引擎 ECT
  • 模板配置系统 CoreTML
  • PHP模板语言 Twig
  • 模板引擎 ETPL
  • JS模板引擎 BaiduTemplate
  • JavaScript模板引擎 EasyTemplate
  • JS模板引擎 Trimpath
  • JavaScript 模板引擎 Elapse


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3