首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >‘'std::vector’:'U64‘不是参数'_Ty’的有效模板类型实参

‘'std::vector’:'U64‘不是参数'_Ty’的有效模板类型实参
EN

Stack Overflow用户
提问于 2015-02-13 03:19:11
回答 1查看 1K关注 0票数 0

我有一个标头SomeDefines.h,它包含

代码语言:javascript
复制
#define U64 unsigned long long
#define U16 unsigned short

在Myclass.h中,我在顶部使用#include SomeDefines.h

在Myclass声明中,我有一个函数

代码语言:javascript
复制
bool someFunc(const std::vector<U64>& theVector);

和成员变量tbb::atomic;

当我在Visual Studio 2012中编译时,我得到以下错误

代码语言:javascript
复制
error: 'U64': undeclared identifier
error C2923: 'std::vector': 'U64' is not a valid template type argument for parameter '_Ty'

如果我用unsigned long long替换U64,错误就会消失

代码语言:javascript
复制
bool someFunc(const std::vector<unsigned long long>& theVector);

我以为编译器会看到#define U64 unsigned long long,并用unsigned long long替换U64

为什么我在U64而不是U16上收到这些错误

EN

回答 1

Stack Overflow用户

发布于 2015-02-13 17:54:23

对于创建新类型,#define不是一个好主意。首选typedefusing

代码语言:javascript
复制
typedef unsigned long long U64;
// or:
using U64 = unsigned long long;
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/28485960

复制
相关文章

相似问题

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