在 Unix 中使用 std::queue() 时出现问题
Problems using std::queue() in Unix
我的程序中有以下代码:
std::queue<typename Leftist_node<Type> *> traversal;
当我在 Windows 上运行它时,它可以编译并正常工作。但是,当我在Unix上运行完全相同的程序时,出现以下错误:
Leftist_heap.h:89: error: template argument 1 is invalid
Leftist_heap.h:89: error: template argument 2 is invalid
尝试使用队列时,我也会收到以下消息:
Leftist_heap.h:92: error: request for member âpushâ in âtraversalâ, which is of non-class type âintâ
这有什么原因吗?我需要更改某些内容才能使其在 Unix 上运行吗?
删除类型名称。 std::queue<Leftist_node<Type>*> traversal;
名告诉编译器标记后面是类型,而不是变量。 在您的示例中,Leftist_node<Type>*
是精确类型。 因此,您不需要关键字 TypeName。
#include <queue>
template<typename T>
class Leftist_node{};
class Type{};
template<typename T>
typename T::value_type front(T& queue)
{
typename T::value_type v = queue.front();
return v;
}
int main()
{
std::queue<Leftist_node<Type>*> traversal;
std::queue<int> q;
q.push(1);
return front(q);
}
GCC 版本 4.8.2 和 clang 版本 3.5.0。
相关文章:
- 警告处理为错误这里有什么问题
- 最小硬币更换问题(自上而下方法)
- 为"adjacent"变量赋值时出现问题
- 我的神经网络不起作用 [XOR 问题]
- 在Ubuntu 16.04上安装Cilk时出现问题
- C++我的数学有什么问题,为什么我的代码不能正确循环
- 编译包含字符串的代码时遇到问题
- Project Euler问题4的错误解决方案
- 问题:什么是QAbstractItemView::NoEditTriggers的反面
- 在编译C++代码(具有dlib和opencv)到WASM时面临问题
- 在进程中对同一管道进行读取和写入时C++管道出现问题
- 静态数据成员的问题-修复链接错误会导致编译器错误
- C++ 雷神库 - 使用资源加载器类时出现问题(不命名类型)
- 一个关于在C++中重载布尔运算符的问题
- 首要问题的答案让值班员搞错了
- setlocale的C++土耳其字符串问题
- 带有 std::vector 和 std::queue 的 Prim's 算法,我的代码有什么问题?
- 在 Unix 中使用 std::queue() 时出现问题
- Queue程序和模板的编译器问题
- 共享内存中的boost::lockfree::queue出现问题(boost1.53,gcc4.7.2/clang3.0