我正在尝试为文件执行广度优先顺序,但是,当我实现此模板类以使用队列时,我得到了这个错误?,任何想法,这可能是什么?,我也不明白的方式指定错误的行号(即myprogram.c:23:10)不知道它在哪里
program.c:11:10: error: expected ‘=’, ‘,’, ‘;’, ‘asm’ or ‘__attribute__’ before ‘<’ token
program.c:22:10: error: expected ‘=’, ‘,’, ‘;’, ‘asm’ or ‘__attribute__’ before ‘<’ token
program.c:33:10: error: expected ‘=’, ‘,’, ‘;’, ‘asm’ or ‘__attribute__’ before ‘<’ token
program.c: In function ‘display_info’:
program.c:49:3: error: ‘q_type’ undeclared (first use in this function)
program.c:49:3: note: each undeclared identifier is reported only once for each function it appears in
program.c:49:10: error: ‘string’ undeclared (first use in this function)
program.c:49:18: error: ‘bfFilesQueue’ undeclared (first use in this function)
program.c:50:18: error: ‘bfDirsQueue’ undeclared (first use in this function)
现在Queue类是从这里开始的,我想用它来表示字符串,基本上是文件路径
http://www.java2s.com/Code/Cpp/Generic/Createagenericqueue.htm
所以我的问题是,因为我不希望你为我调试这个..但想知道以下内容:
我试图在#include之后将队列声明在顶部,以便我可以全局访问它们。它似乎不喜欢它,因为我试图从display_info函数中使用它。我怎样才能声明这一点,以便我可以从任何地方访问这些队列?
我不明白如何检查它告诉错误的哪一行(即:12:10),我从我发布的链接中取出了这个模板类..不知道为什么会抛出错误。如何根据这些奇怪的数字知道行号?
所以代码和错误只是信息性的,所以你可以用足够的信息回答这两个问题..任何帮助将不胜感激。
谢谢
#define _XOPEN_SOURCE 500
#include <ftw.h>
#include <stdio.h>
#define SIZE 100
template <class Qtype> class q_type {
Qtype queue[SIZE];
int head, tail;
public:
q_type() {
head = tail = 0;
}
void q(Qtype num);
Qtype deq();
};
template <class Qtype> void q_type<Qtype>::q(Qtype num)
{
if(tail+1==head || (tail+1==SIZE && !head)) {
cout << "Queue is full.\n";
return;
}
tail++;
if(tail==SIZE)
tail = 0; // cycle around
queue[tail] = num;
}
template <class Qtype> Qtype q_type<Qtype>::deq()
{
if(head == tail) {
cout << "Queue is empty.\n";
return 0;
}
head++;
if(head==SIZE)
head = 0;
return queue[head];
}
q_type<string> bfFilesQueue;
q_type<string> bfDirsQueue;
static int display_info(const char *fpath, const struct stat *sb,
int tflag, struct FTW *ftwbuf)
{
//Check the type of Flag (i.e File or Directory)
switch(tflag)
{
case FTW_D:
case FTW_F:
bfFilesQueue.q(fpath);
break;
case FTW_DP:
bfDirsQueue.q(fpath);
break;
}
return 0; /* Continue */
}
答案 0 :(得分:3)
program.c:11:10:错误:在'&lt;'令牌
之前预期'=',',',';','asm'或'属性'
这听起来像是在编译C ++源代码为C。
然后,一个简单的修复就是将文件重命名为program.cpp
。
干杯&amp;第h。,
答案 1 :(得分:0)
你宣布
q_type<string> bfFilesQueue;
q_type<string> bfDirsQueue;
在您实际声明q_type之前。尝试将这些行放在课程
之后