gpt4 book ai didi

c++ - C2975 'N' 的无效模板参数,预期的编译时常量表达式

转载 作者:行者123 更新时间:2023-11-30 01:45:25 28 4
gpt4 key购买 nike

这是一种代码片段,应该在大约 7.1 (VS 2003) 的版本上运行。

我无法在 Visual Studio 2013 上编译它。

.h header:

template <HINSTANCE h, DWORD hash, class N>
inline LPVOID testFunc(N n1)
{
...
return ret_func(n1);
}


.cpp:

HINSTANCE kernel32;

int WINAPI WinMain(...)
{
...
kernel32 = GetKernel32();
HINSTANCE mod = testFunc<kernel32, 0x0BADC0DE>("some_string"); // C2975
...
}

错误 C2975:“h”:“testFunc”的无效模板参数,应为编译时常量表达式

我试过这样的:

HINSTANCE kernel32 = GetKernel32();  // implemented ok
HINSTANCE mod = testFunc<kernel32, 0x0BADC0DE>("some_string"); // C2971

错误 C2971:“pushargEx”:模板参数“h”:“kernel32”:局部变量不能用作非类型参数

最佳答案

错误实际上是不言自明的:

expected compile-time constant expression

kernel32 不是。

“编译时常量”表示该值必须在编译时已知,即。 e.在源代码本身中指定(直接或间接)。

关于c++ - C2975 'N' 的无效模板参数,预期的编译时常量表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34704707/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com