템플릿 멤버 함수를 특수화하려고합니다. 문제는 디버그 모드에서 메서드의 특수화를 호출하지만 Release에서는 비 전문화 된 함수를 호출한다는 것입니다.Qt Creator : 디버그 및 릴리스 모드에서 클래스 템플릿의 다른 동작
예를 들어, I 클래스 템플릿과 전문적인 방법
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
편집을 사용하고 있습니다 : 당신이 정수로 doSomething()
를 호출하는 것처럼 cout
당신이에서 mathop.cpp 및 .H을 제거하려고 할 수 있습니다 .pro 파일을 작성하고 main.cpp에 표시되는 코드를 입력하십시오. (현재 코드는 #include가 포함되어 있지 않으므로 컴파일되지 않습니다.). 나는 당신이 보여주지 않는 코드에 문제가 있다고 생각한다. –