c ++错误:预期';' 在'<'标记之前

And*_* AG 1 c++

所以我在编写光线跟踪器时尝试学习c ++,当我尝试使用我的makefile(首先生成.o文件然后链接它们)进行编译时,我对此错误有点挣扎.完整错误如下:

touch include/ray.h
touch include/material.h
touch include/hit.h
touch include/object.h
touch include/light.h
touch include/scene.h
touch include/sphere.h
touch include/directional_light.h
g++ -c -O -I. raytrace.cpp -o raytrace.o -std=c++0x
g++ -c -O -I. base/scene.cpp -o base/scene.o -std=c++0x
g++ -c -O -I. base/vector.cpp -o base/vector.o -std=c++0x
g++ -c -O -I. base/vertex.cpp -o base/vertex.o -std=c++0x
g++ -c -O -I. base/colour.cpp -o base/colour.o -std=c++0x
g++ -c -O -I. objects/object.cpp -o objects/object.o -std=c++0x
g++ -c -O -I. objects/sphere.cpp -o objects/sphere.o -std=c++0x
g++ -c -O -I. base/material.cpp -o base/material.o -std=c++0x
g++ -c -O -I. base/ray.cpp -o base/ray.o -std=c++0x
g++ -c -O -I. lights/light.cpp -o lights/light.o -std=c++0x
g++ -c -O -I. lights/directional_light.cpp -o lights/directional_light.o -std=c++0x
g++ -c -O -I. base/hit.cpp -o base/hit.o -std=c++0x
g++ -c -O -I. base/matrix.cpp -o base/matrix.o -std=c++0x
touch include/t_stack.h
g++ -c -O -I. t_stack/matrix_w.cpp -o t_stack/matrix_w.o -std=c++0x
touch include/t_stack.h
g++ -c -O -I. t_stack/t_stack.cpp -o t_stack/t_stack.o -std=c++0x
In file included from t_stack/t_stack.cpp:1:
./include/t_stack.h:12: error: expected ‘;’ before ‘<’ token
./include/t_stack.h:13: error: expected ‘;’ before ‘<’ token
Run Code Online (Sandbox Code Playgroud)

导致问题的代码是t_stack.h文件:

1 #ifndef _STACK_H_
2 #define _STACK_H_
3
4 #include <stack>
5 #include <list>
6 #include <iostream>
7 #include "include/matrix.h"
8 #include "include/matrix_w.h"
9 
10 class T_stack {
11    private:
12        stack<Matrix_w*, list<Matrix_w* > >* m_stack;
13        list<Matrix<double>* >* t_list;
14    public:
15        T_stack();
16        void pop();
17        void push_translation(double tx, double ty, double tz);
18        void push_scaling(double sx, double sy, double sz);
19        int size() const;
20        ~T_stack();
21 };
22
23 #endif
Run Code Online (Sandbox Code Playgroud)

我已经检查了其中包含的其他文件,例如matrix.h和matrix_w.h,我很确定它们不会遗漏任何分号或任何这些东西.我甚至尝试编译除t_stack.h文件之外的所有内容并且它正确构建...任何想法可能是什么问题?这有点奇怪,因为在我尝试将这些文件与其余代码合并之前,我使用更简单的程序进行了几项测试,并且一切正常...非常感谢帮助.谢谢!

Mik*_*our 5

stack并且list,就像标准库中的所有内容一样,在std命名空间中声明.为了使用它们,您需要将它们限定为std::stackstd::list.

另外,不要使用保留名称一样_STACK_H_.