0

我正在尝试在线学习斯坦福的 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 中遇到了两个错误。第一个是“模板参数使用本地类型'point'。”第二个是“请求'pointVector'中的成员'add',它是非类类型'int'。这是我的编译器的某种问题吗?从文档来看,这应该可以工作。

4

2 回答 2

4

在 2011 年之前,该语言有一个奇怪且毫无意义的限制:模板参数不能涉及本地类型。这已在 2011 年标准中得到修复。

要修复第一个错误,请执行以下任一操作:

  • 将定义point移出函数,移入类或命名空间;或者
  • 在您的编译器中启用 C++11 支持,或者如果它不能做到这一点,请获取更新的编译器。

第二个错误是第一个错误的连锁反应;编译器无法确定 的类型pointVector,因此它无济于事地决定假装它是int并继续。修复第一个错误后,该错误应该消失。

于 2013-02-20T15:25:53.820 回答
-1

试着做

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);

这应该这样做。

于 2013-02-20T15:21:22.933 回答