如何扩展 C++ 中现有的模板?

发布于 2024-11-06 13:42:45 字数 619 浏览 0 评论 0原文

我正在使用一个模板的遗留代码,该代码基于

  template<class keyType, class dType> Foo Bar(const dType val)

该代码中的某个地方,有人制作了这样的调试函数:

virtual void getDebugStr01(int db_id, OFCString & db_str)
{
    //OFCStringStream ss;
    if(db_id==0)
    {
        map<keyType, dType>::iterator it = m_stateData.begin();
        for(;it!=m_stateData.end();it++)
        {
            (it->second).getDebugStr01(db_str);
        }
    }
}

现在,我需要使用带有浮点数的模板类。有办法做到这一点吗?

目前我得到:

   error C2228: left of '.getDebugStr01' must have class/struct/union

I am working with legacy code of a template that is based on

  template<class keyType, class dType> Foo Bar(const dType val)

Somewhere in that code is a place where someone made a debug function like this:

virtual void getDebugStr01(int db_id, OFCString & db_str)
{
    //OFCStringStream ss;
    if(db_id==0)
    {
        map<keyType, dType>::iterator it = m_stateData.begin();
        for(;it!=m_stateData.end();it++)
        {
            (it->second).getDebugStr01(db_str);
        }
    }
}

Now, I would need to use the template class with a float. Is there anyway to do this?

Currently I get a:

   error C2228: left of '.getDebugStr01' must have class/struct/union

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

软的没边 2024-11-13 13:42:45

getDebugStr01() 应该是 class/struct 的成员。 虚拟方法不能独立存在。

你可以做类似的事情,

Foo Bar (const float f)
{
...
}

getDebugStr01() should be a member of a class/struct. virtual methods cannot be stand alone.

You can do something like,

Foo Bar (const float f)
{
...
}
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文