2927|1

73

帖子

0

TA的资源

一粒金砂(初级)

楼主
 

编译错误在VS2005,但是OK在VC6 [复制链接]

Dear all,

recently I transform my project from vc6 to vs2005, it occur to the following error:

d:\Program Files\Microsoft Visual Studio 8\VC\ce\include\xtree(1172) : error C3848: expression having type 'const CFormatter::ltwsz' would lose some const-volatile qualifiers in order to call 'bool CFormatter::ltwsz::operator ()(const wchar_t *,const wchar_t *)'
        d:\Program Files\Microsoft Visual Studio 8\VC\ce\include\xtree(1167) : while compiling class template member function 'std::_Tree_nod<_Traits>::_Node *std::_Tree<_Traits>::_Lbound(const wchar_t *const &) const'
        with
        [
            _Traits=std::_Tmap_traits>,false>
        ]
        d:\Program Files\Microsoft Visual Studio 8\VC\ce\include\map(82) : see reference to class template instantiation 'std::_Tree<_Traits>' being compiled
        with
        [
            _Traits=std::_Tmap_traits>,false>
        ]
        d:\ccm_wa\jethzh\nav_sdk#arbrbg#1-jethzh#uida35611\tovs2005\nav_sdk\source\hmi\Formatter.h(201) : see reference to class template instantiation 'std::map<_Kty,_Ty,_Pr>' being compiled
        with
        [
            _Kty=const wchar_t *,
            _Ty=std::wstring,
            _Pr=CFormatter::ltwsz
        ]

my source code as follows:


#ifndef __FORMATTER_H__
#define __FORMATTER_H__

#ifdef _MT
#  undef _MT
#  include
#  define _MT 1
#else
#  include
#endif

#include
#include

#include "ResourceManager.h"
#include "Utils.h"

class CFormatter : public CUtils
{
  public:
        CFormatter() {}

        /** @brief Constructor, setting format from string ID. */
        template
        CFormatter(FormatType format)
        {
                SetFormat(format);
        }

        inline CFormatter& SetFormat(const wchar_t* format)
        {
                m_fmt = format;
                return *this;
        }

        inline CFormatter& SetFormat(std::wstring format)
        {
                m_fmt = format;
                return *this;
        }

        inline CFormatter& SetFormat(UINT format)
        {
                m_fmt = (LPCTSTR)(CResourceManager::GetInstance()->GetString(format));
                return *this;
        }

        operator const std::wstring();

        operator const wchar_t*();

        void Get(CString& strResult);

        template
        CFormatter& Add(LPCTSTR key, LPCTSTR format, ValueType value)
        {
                CString buf;
                buf.Format(format, value);
                m_map[key] = buf;
                return *this;
        }

        template
        CFormatter& Add(LPCTSTR key, ValueType value)
        {
                m_map[key] = ToWString(value);
                return *this;
        }

  private:
        void Format();

        struct ltwsz
        {
                bool operator()(const wchar_t* left, const wchar_t* right)
                {
                        return wcscmp(left, right) < 0;
                }
        };

        std::wstring m_fmt;
        std::map m_map;
        std::wstring m_res;
};

#endif //__FORMATTER_H__

最新回复

see msdn: A variable with a specified const-volatile type can only call member functions defined with same or greater const-volatile qualifications. please modify your code.  详情 回复 发表于 2008-2-16 13:24
点赞 关注

回复
举报

70

帖子

0

TA的资源

一粒金砂(初级)

沙发
 
see msdn:
A variable with a specified const-volatile type can only call member functions defined with same or greater const-volatile qualifications.
please modify your code.
 
 

回复
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/9 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表