我有類以下幾點:初始化自定義類的向量?
//Rectangle.h
#include "Point.h"
class Rectangle{
public:
Rectangle();
void setWidth(int);
void setHeight(int);
int getWidth();
int getHeight();
void draw(Point);
private:
int m_width;
int m_height;
};
//Rectangle.cpp
#include <Windows.h>
#include <iostream>
#include <GL/Gl.h>
#include <GL/Glu.h>
#include <GL/Glut.h>
#include "Rectangle.h"
#include "Point.h"
//constructor
Rectangle::Rectangle(){
}
int Rectangle::getHeight(){
return m_height;
}
int Rectangle::getWidth(){
return m_width;
}
void Rectangle::setHeight(int a_height){
m_height = a_height;
}
void Rectangle::setWidth(int a_width){
m_width = a_width;
}
void Rectangle::draw(Point center){
int pointWidth = m_width/2;
int pointHeight = m_height/2;
std::cout << "drawing rectangle at" << center.getX() << ", " << center.getY() << std::endl;
glColor3f(1, 1, 0);
glBegin(GL_POLYGON);
glVertex2i(center.getX() - pointWidth, center.getY() - pointHeight);
glVertex2i(center.getX() + pointWidth, center.getY() - pointHeight);
glVertex2i(center.getX() + pointWidth, center.getY() + pointHeight);
glVertex2i(center.getX() - pointWidth, center.getY() + pointHeight);
glEnd();
}
然後,我已經中的main.cpp以下。問題是與線vector<Rectangle> rectangles;
我得到以下錯誤:
std::vector : Rectangle is not a valid template type argument for parameter '_Ty'
#include <Windows.h>
#include <math.h>
#include <string>
#include "Rectangle.h"
#include "Point.h"
#include "Pentagon.h"
#include "Star.h"
#include "StringManip.h"
#include <iostream>
#include <fstream>
#include <vector>
#include <GL/Gl.h>
#include <GL/Glu.h>
#include <GL/Glut.h>
using namespace std;
// Function prototypes for callbacks
void myDisplay(void);
void myInit();
void openFile(string);
Point point;
vector<Point> points;
vector<Rectangle> rectangles;
vector<Pentagon> pentagons;
vector<Star> stars;
我在什麼是一個損失。我想我已經正確地完成了我的課程。如果有人能告訴我什麼是錯的,我會很感激。
這裏的Point.h和Point.cpp
//Point.h
#ifndef POINT_H
#define POINT_H
class Point {
public:
//default constructor
Point() {
m_xCoord = 0;
m_yCoord = 0;
}
//set x and y
void setX(int a_x);
void setY(int a_y);
//get x and y
int getX();
int getY();
//change x and y by a specified value.
void changeX(int a_x);
void changeY(int a_y);
private:
int m_xCoord;
int m_yCoord;
};
#endif
//Point.cpp
#include "Point.h"
void Point::setX(int a_x){
m_xCoord = a_x;
}
void Point::setY(int a_y){
m_yCoord = a_y;
}
int Point::getX(){
return m_xCoord;
}
int Point::getY(){
return m_yCoord;
}
void Point::changeX(int a_x){
m_xCoord += a_x;
if(m_xCoord < 0){
m_xCoord = 0;
}
}
void Point::changeY(int a_y){
m_yCoord += a_y;
if(m_yCoord < 0){
m_yCoord = 0;
}
}
你可以顯示'Point.h'(你包括它的方式,這是不必要的兩次)。 – pmr 2012-02-16 22:54:58
好的。剛剛編輯我的文章 – Cuthbert 2012-02-16 22:58:19
看起來你實際上比''Rectangle'獲得別的東西。你會遇到這個錯誤,例如如果'Rectangle'是一個模板。 – 2012-02-16 23:02:56