带有名称空间的模板结构的Typedef
Typedef for templated struct with namespaces
我有三个文件:
位置。H:
namespace X {
namespace Y {
namespace Z {
template<typename T1 = long, typename T2 = long>
struct Position {
};
}}}
class_from_api.h
#include "position.h"
typedef X::Y::Z::Position<> Position;
namespace X {
namespace Y {
namespace Z {
class ClassFromAPI {
Position<> p; // why not Position?
};
}}}
typedef X::Y::Z::ClassFromAPI ClassFromAPI;
user_class.h:
#include "class_from_api.h"
Class UserClass : public ClassFromAPI {
Position p;
};
我的问题是:为什么我必须在classFromapi" position&lt;>"中写入,而在UserClass中,有必要写入"位置",尽管这两个都有相同的Typedef。 <</strong>
classfromapi的更改导致:
error C2955: 'X::Y::Z::Position' : use of class template requires template argument list
更改Userclass的结果:
error C2059: syntax error : '<'
error C2238: unexpected token(s) preceding ';'
X::Y::Z::Position
模板的定义 shadows ::Position
typedef。它在X::Y::Z
中是看不见的。
您不能使用相同的名称来参考模板和类型在同一范围中。您需要更改其中的一个。
相关文章:
- 如何创建 typedef 结构的前向声明
- 使用智能指针指向 C 库中的结构,该结构通过 typedef 隐藏实现(即不完整的类型)
- 无法转发声明C typedef结构-正在查找其他建议
- 如何使用 SWIG 接口访问 python 中的 C++ typedef'd 结构
- 为什么要在结构中放置枚举,然后使用 typedef 名称?
- "typedef"类型名称是否可以像"struct"定义那样声明指向结构的指针?
- 具有未声明/未定义类型的 typedef 结构
- 在 CPP 中初始化 typedef 结构变量
- C++ 无法在 typedef 结构中重载<运算符
- typedef(别名)与结构性能
- 在 typedef 结构中声明一个数组
- 从 csv 文件中获取不同类型的数据,并将其放入 C++ 中的 typedef 结构中
- 为什么 typedef 结构允许默认初始值设定项?
- 没有对象或结构的自我参考Typedef
- 为什么我不能像正常一样初始化 typedef 结构字符串或字符?
- 在Typedef结构中,下划线意味着什么
- 来自 typedef 结构的错误
- 在Typedef结构(C )中超载运算符
- 带有名称空间的模板结构的Typedef
- C++中具有对象名称的typedef结构的正向声明