繁体   English   中英

Qt Creator:在调试和发布模式下类模板的不同行为

[英]Qt Creator: different behavior of class template in Debug and Release modes

我正在尝试专门化模板成员函数。 问题在于,在Debug模式下,调用方法的特殊化,而在Release模式下,调用非专用函数。

例如,我有类模板和专门的方法

template <typename T>
class SimpleClass
{
public:
    void doSomething(const T& arg)
    {
        std::cout << "doSomething(const T& arg)" << std::endl;
    }
};
template <>
void SimpleClass<double>::doSomething(const double& arg)
{
    std::cout << "doSomething(const double& arg)" << std::endl;
}

int main(int argc, char **argv)
{
    SimpleClass<double> obj;
    obj.doSomething(1);
    return 0;
}

我期望该输出将为"doSomething(const double& arg)"

因此,在“调试”模式下我明白了,但是在“发行版”中我明白了这一点: "doSomething(const T& arg)"

我的问题是,为什么该代码具有这种行为,我该如何解决? 以防万一,我的.pro文件

TEMPLATE = app
CONFIG += console c++11
CONFIG -= app_bundle
SOURCES += main.cpp \
    mathop.cpp
HEADERS += \
    mathop.h

编辑:我正在使用Qt 5.9.1

编辑:使用cout之前忘记#include <iostream>

当您使用整数作为参数调用doSomething()时,我猜编译器只是试图在此处查找任意匹配项。 我不能说为什么调试版本和发布版本的行为会有所不同,但是当在调用中明确使用浮点值时,我希望它能按预期工作:

obj.doSomething(1.0);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM