我有有将基本类型的_variant_t静态函数的类类型:C++模板函数跳过一个静态函数调用
class VariantConverter {
public:
static void ToVariant(int Value, _variant_t &Variant) {
Variant.vt = VT_I4;
Variant.intVal = Value;
}
static void ToVariant(double Value, _variant_t &Variant) {
Variant.vt = VT_R8;
Variant.dblVal = Value;
}
static void ToVariant(std::string Value, _variant_t &Variant) {
Variant.SetString(Value.c_str());
}
static void ToVariant(bool Value, _variant_t &Variant) {
Variant.vt = VT_BOOL;
Variant.boolVal = Value;
}
};
我想如下在我的模板函数的一个使用此:
void doSomething(_variant_t);
template <typename T>
void ProcessVariant(T Value) {
_variant_t Variant;
VariantConverter::ToVariant(Value, Variant); // SKIPPED!!!!
doSomething(Variant); // Do something with the _variant_t
}
int main() {
ProcessVariant<int>(1);
ProcessVariant<double>(1.1);
}
上面的代码是行不通的,所以我调试,找出什么是错的..
事实证明,ToVariant被调用的整个行被忽略了! (当我为每一行设置中断点并继续点击“继续”时,它只是忽略ToVariant线并直接转到doSomething)
为什么ToVariant方法根本不会被调用?
@ T.C。对不起,这是一个错字。我更新了它。 – user2436815
你怎么知道它没有被调用?什么指示(除了可能是片状的调试器)告诉你该功能被跳过? – PaulMcKenzie
@PaulMcKenzie在Visual Studio中,我在ProcessVariant函数的每一行都设置了断点...它进入第一行,然后直接执行doSomething ..完全忽略第二行 – user2436815