gpt4 book ai didi

c++ - 在 C++ 中使用 vector 时 Push_back 导致错误

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:57:50 27 4
gpt4 key购买 nike

我在编译这段代码时遇到问题。我正在 OS X 10.6 上使用 Eclipse 进行编译。该问题似乎仅在使用 vector 时出现。我似乎根本无法使用 push_back 函数。每次尝试时,我都会收到错误消息“'.' 之前需要构造函数、析构函数或类型转换” token ”。以下是我的一些代码片段:

#include <GLUT/glut.h>
#include <vector>
#include <stdlib.h>
#include <iostream>
#include <math.h>
using namespace std;
enum Colour {BLACK =0, RED=1, BLUE=2, GREEN=3, PURPLE=4, ORANGE=5, CYAN=6, BLANK=7};

class Point {
private:
GLfloat xval, yval;
public:
Point(float x =0.0, float y = 0.0){
xval=x;
yval=y;
}

GLfloat x() {return xval;}
GLfloat y() {return yval;}
};


class LinePoint {
private:
Point p;
Colour cNum;
public:
LinePoint(Point pnt = Point(0,0), Colour c = BLACK){
cNum = c;
p = pnt;
}
Point getPoint(){return p;}
Colour getColour(){return cNum;}
};
float turtleScale = 20;
Point turtlePos = Point(300./turtleScale,200./turtleScale);
LinePoint* lp = new LinePoint(turtlePos,BLACK);

vector<LinePoint*> lines;

lines.push_back(lp);

我不确定这是否与 Eclipse 的设置方式有关,但似乎如果我使用位于 here 的代码,代替我的 vector 调用,它仍然编译并出现相同的错误。

最佳答案

这里:

float turtleScale = 20;
Point turtlePos = Point(300./turtleScale,200./turtleScale);
LinePoint* lp = new LinePoint(turtlePos,BLACK);

vector<LinePoint*> lines;

...你使用初始化,但是这个:

lines.push_back(lp);

...是一个声明!它必须存在于函数中:)

int main()
{
lines.push_back(lp);
}

... 会起作用。

关于c++ - 在 C++ 中使用 vector 时 Push_back 导致错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2166321/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com