斯坦福大学CS 106B在添加到结构向量时出错——编译器问题
Stanford CS 106B error when adding to vector of structs —issue with compiler?
我试图在线学习斯坦福大学的CS 106B课程,但当我试图向结构向量添加元素时,我遇到了麻烦。知道发生了什么事吗?
struct point { // Definition for our "point" structure
int x;
int y;
};
Vector<point> pointVector;
point derp;
derp.x = 1;
derp.y = 2;
pointVector.add(derp);
不幸的是,当我尝试这样做时,XCode中出现了两个错误。第一个是"Template argument使用本地类型'point'。"第二个是"请求'pointVector'中的成员'add',它是非类类型'int'。这是我的编译器的某种问题吗?从文档来看,这应该有效。
2011年之前,该语言有一个奇怪且毫无意义的限制:模板参数不能涉及本地类型。这一点已在2011年的标准中得到固定。
要修复第一个错误,请执行以下操作之一:
- 将
point
的定义从函数中移到类或命名空间中;或 - 在编译器中启用C++11支持,如果不能做到这一点,可以使用最新的编译器
第二个错误是第一个错误的连锁效应;编译器无法确定pointVector
的类型,因此它决定假装它是int
并继续执行。一旦修复了第一个错误,错误就会消失。
尝试进行
typedef struct point { // Definition for our "point" structure
int x;
int y;
}point;
std::vector<point> pointVector;
point derp;
derp.x = 1;
derp.y = 2;
pointVector.add(derp);
或
struct point { // Definition for our "point" structure
int x;
int y;
};
std::vector<struct point> pointVector;
point derp;
derp.x = 1;
derp.y = 2;
pointVector.add(derp);
这样就可以了。
相关文章:
- 使用 Windows 10 和 MINGW 编译器在 VS Code 上使用 gdb 调试器进行调试时出错
- 泛型函数反向打印任何矢量,编译器出错
- C++语法错误,编译器不会警告或 int v = func(&v) 出错;
- 使用编译器进行外部初始化时出错C++
- 编译器包装可解释函数时出错
- 编译 .cu 与 .cpp:即使没有任何 CUDA 代码,编译器也会出错
- 动态堆栈、编译时出错、dev编译器和g++
- 非常量引用类型的无效初始化中出错.在Linux操作系统中使用c++代码.GCC编译器
- 为什么编译器在定义类似的模板专用化时不会出错?
- 编译器在转发结构声明上出错
- MSVC 编译器错误导致迭代器和友元函数出错
- 编译器尝试删除作为指针的模板类型时出错
- 在 eclipse 中使用 migw 编译器对构建 Tapi3 c++ 示例时出错
- 为什么C编译器在[5]==5[a]时出错
- 在Windows 7中通过GnuWin32使用Microsoft Visual C/C++编译器编译源(.C)文件时出错
- 使用PGI编译器链接Armadillo时出错
- 编译器错误消息错误:令牌之前的预期')' '*'。我的构造函数出错
- g++ 编译器调用函数时出错(向量<向量<int> > &)
- 使用针对Win32的英特尔C++编译器编译Qt时出错,我做错了什么
- 斯坦福大学CS 106B在添加到结构向量时出错——编译器问题