您的位置:首页 > 编程语言 > C语言/C++

C++通过内嵌类无法推断外部类的模板实参。 

2016-06-15 00:00 465 查看
本次验证有如下两个结论

1、C++通过嵌套类无法推断出外部类的模板实参。

2、C++内部类可访问外部类的私有成员。

#include <iostream>
#include <stdint.h>

template<typename Type>
class OuterClass
{
public:
class InnerClass;

public:
OuterClass(uint32_t nNum):m_OuterNum(nNum){}

private:
uint32_t	m_OuterNum;
};

template<typename Type>
class OuterClass<Type>::InnerClass
{
public:
InnerClass(const OuterClass &outer): m_InnerNum(outer.m_OuterNum){}

private:
uint32_t	m_InnerNum;
};

template<typename Type>
void Function(const typename OuterClass<Type>::InnerClass &inner)
{
return;
}

int  main()
{
typedef OuterClass<uint32_t> IntOuterClass;
IntOuterClass intClass(99);
IntOuterClass::InnerClass innerClass(intClass);

Function(innerClass);//Error. Could not deduce template argument for 'Type'
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: