如何声明内部模板类
How to declare inner template class?
我在内部模板类的声明中遇到了问题。
我在a.h
中创建了一个Class A
我的代码是这样的
class A
{
public:
private:
// How declare LockFreeQueue here
};
template <typename T>
struct LockFreeQueue
{
LockFreeQueue();
void push(const T& t);
bool pop(T& t);
private:
typedef std::list<T> TList;
TList list;
typename TList::iterator iHead, iTail;
};
/**
* Constructor
* Initializes required variables
* */
template <typename T>
LockFreeQueue<T>::LockFreeQueue()
{
list.push_back(T());
iHead = list.begin();
iTail = list.end();
}
/**
* pushes data in the list
* @param datatype that needs to be pushed
* */
template <typename T>
void LockFreeQueue<T>::push(const T& t)
{
list.push_back(t);
iTail = list.end();
list.erase(list.begin(), iHead);
}
/**
* Pops Queue
* @param t stores popped data at t's address
* @return true if data available, false otherwise
* */
template <typename T>
bool LockFreeQueue<T>::pop(T& t)
{
typename TList::iterator iNext = iHead;
++iNext;
if (iNext != iTail)
{
iHead = iNext;
t = *iHead;
return true;
}
return false;
}
任何帮助都将是非常感激的,
谢谢,BRYuvi
把它移到里面:
class A
{
public:
private:
template <typename T>
struct LockFreeQueue
{
LockFreeQueue();
void push(const T& t);
bool pop(T& t);
private:
typedef std::list<T> TList;
TList list;
typename TList::iterator iHead, iTail;
};
};
并在定义时添加A
的作用域,如下:
template <typename T>
A::LockFreeQueue<T>::LockFreeQueue()
相关文章:
- C++:在函数内部声明数组时,表达式必须具有常数值
- 正在为循环内部声明向量
- (C++)返回函数内部声明的对象的地址
- 稍后在程序中使用if-else构造内部声明的变量会导致未声明的标识符错误
- C++在if-else内部声明派生类对象,并在外部使用它
- 在类内部声明结构
- 在条件中使用do-while循环内部声明的变量
- 在结构定义内部声明结构的堆栈
- 使用外部类内部声明的数据类型
- 在C++中的类的函数内部声明变量
- C++-在函数内部声明数组
- QByteArray的外部与内部声明
- C++ 结构内部声明混淆
- 在类外部使用在类内部声明的类型定义枚举
- 在函数内部声明函数的用法
- 模板成员函数的参数推导不适用于函数内部声明的类
- 函数内部声明的静态变量的值是多少
- 潜在的长循环和内部声明变量
- 在类内部声明模板化函数(基于容器类型),在模板类外部定义模板化函数(基于容器类型)
- 在函数内部声明函数时出现语法错误