访问其他模板中的模板参数
Access template parameters in another template
在下面的代码中:
class foo{};
class bar{};
template<class Type1=foo,class Type2=bar>
class A{};
template <class T= A<>>
class B
{
public:
void func(typename T::Type1 a){} //error 'Type1' : is not a member of 'A<foo,bar>'
};
int main()
{
B<> b;
b.func(foo()); //error
}
我想访问B
模板的参数(Type1
和Type2
在这种情况下)我怎么能使它工作?!
你需要"导出"这些类型,也就是说,将它们声明为你的类模板的公共类型。例如
template<class T1=foo,class T2=bar>
class A
{
public:
typedef T1 Type1;
typedef T2 Type2;
};
c++ 11风格
template<class T1=foo,class T2=bar>
class A
{
public:
using Type1 = T1;
using Type2 = T2;
};
相关文章:
- 使用不带参数的函数访问结构元素
- 从C++dll访问C#中的一行主要参数
- 函数是否可以访问传递给main()的参数
- 使用c#访问c++dll中带有char*参数的函数时发生AccessViolationException
- 如何从其他功能C++访问参数?
- 读取大文件(>2GB)(文本文件包含以太网数据)并通过不同参数随机访问数据的最佳方法是什么?
- 如何访问模板参数自己的模板参数?
- 如何访问QT中传递给程序的参数
- 从模板参数包实例化的访问类实现
- 限制多模板参数朋友函数可访问的类实例的范围
- 在将向量作为参数传递给函数后,我无法访问函数中向量的元素
- 使用指针访问参数接收的结构中的元素时内存泄漏
- 从析构函数访问模板类构造函数的参数,可以吗?
- 仅当构造函数具有参数时,C++ 公共成员才能访问
- C/C++ 包含点的宏参数(成员访问运算符)
- 处于默认参数位置的 Lambda 无法访问好友成员。这是编译器错误吗?
- 在函数中使用 const 引用参数访问函数中成员的最佳实践 C++.
- 使用 cv::P oint 作为参数访问图像
- 在 c++ 中使用数组参数访问单个元素的字符
- 是否可以从参数访问成员名称