テンプレートメンバ関数を特殊化しようとしています。問題は、デバッグモードではメソッドの特殊化が呼び出されますが、Releaseでは非特殊化された関数が呼び出されるという点です。Qt Creator:デバッグモードとリリースモードでのクラステンプレートの動作が異なります
は例えば、私はクラステンプレートと専門方法
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が含まれていないのでコンパイルされません)。私はあなたが表示されていないコードに問題があると考えています。 –