首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用std::map - Compiler错误C1001的类头中的C1001模板化属性

使用std::map - Compiler错误C1001的类头中的C1001模板化属性
EN

Stack Overflow用户
提问于 2013-05-20 12:02:31
回答 2查看 116关注 0票数 1

我对C++相当陌生,所以我不知道我做错了什么。

这是我的构想:

结构

代码语言:javascript
复制
template<size_t N> struct Offsets 
{ 
    static const int length = N;
    DWORD offsets[N]; 
};

以及财产:

代码语言:javascript
复制
template <size_t N>
std::map<std::string, std::map<DWORD, Offsets<N>>> pointers;

这将导致

编译器错误C1001。

这有什么问题吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-05-20 12:05:25

变量不能模板化,它们必须完全指定。因此,要声明pointers变量,必须指定N

票数 3
EN

Stack Overflow用户

发布于 2013-05-20 12:18:50

不能在变量上使用模板。如果希望保持指针的灵活性,请将其封装在模板类或结构中。

代码语言:javascript
复制
template< size_t N >
class PointerOffsetMap
{
...
public:
    std::map<std::string, std::map<DWORD, Offsets<N>>> pointers;
}

只是一个非常简单的例子,您可能应该将指针设置为私有,并添加一些访问函数以获得一个很好的接口。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16649095

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档