It's rendering nothing

I’m trying to create my own lib that can simplify code, so I’m trying to write the tutorials that we can found on web using my lib but I’m have some trouble and I don’t know why it’s rendereing nothing.
so this is my main file


#include "../../lib/OpenGLControl.h"
#include "../../lib/Object.h"
#include <iostream>
using namespace std;
using namespace sgl;

int main(){
	OpenGLControl sglControl;
	sglControl.initOpenGL("02 - My First Triangle",1024,768,3,3);
	GLuint VertexArrayID;
	glGenVertexArrays(1, &VertexArrayID);
	glBindVertexArray(VertexArrayID);
	//trconfigurações do triangulo
	vector<glm::vec3> vertices;
	
	vertices.push_back(glm::vec3(-1.0f,-1.0f,0.0f));
	vertices.push_back(glm::vec3(1.0f,-1.0f,0.0f));
	vertices.push_back(glm::vec3(0.0f,1.0f,0.0f));
	glClearColor(0.0f, 0.0f, 0.0f, 0.0f);
	
	Object triangle(vertices);

	do{
		glClear(GL_COLOR_BUFFER_BIT); 
		triangle.render(GL_TRIANGLES);
	    	glfwSwapBuffers();
	 
	}
	while( glfwGetKey( GLFW_KEY_ESC ) != GLFW_PRESS &&
	glfwGetWindowParam( GLFW_OPENED ) );
	glDeleteVertexArrays(1, &VertexArrayID);
	glfwTerminate();
	return 0;
	
}

and this is my Object class functions.


#include "../lib/Object.h"

sgl::Object::Object(){
	this->hasColor = false;
	
}

sgl::Object::Object(std::vector<glm::vec3> vertices){
	for(int i = 0; i < vertices.size(); i++)
		this->vertices.push_back(vertices[i]);
	
	glGenBuffers(1, &vertexBuffer);
	glBindBuffer(GL_ARRAY_BUFFER, this->vertexBuffer);
	glBufferData(GL_ARRAY_BUFFER, this->vertices.size()*sizeof(glm::vec3),&vertices[0], GL_STATIC_DRAW);
}

sgl::Object::~Object(){
		glDisableVertexAttribArray(0);
		glDisableVertexAttribArray(1);
		glDeleteBuffers(1,&(this->vertexBuffer));
		glDeleteBuffers(1,&(this->colorBuffer));
}



void sgl::Object::render(GLenum mode){
	// 1rst attribute buffer : vertices
	glEnableVertexAttribArray(0);
	glBindBuffer(GL_ARRAY_BUFFER, this->vertexBuffer);
	glVertexAttribPointer(
		0, // The attribute we want to configure
		3,                  // size
		GL_FLOAT,           // type
		GL_FALSE,           // normalized?
		0,                  // stride
		(void*)0            // array buffer offset
	);
	
	cout<<vertices.size()<<endl;
	glDrawArrays(mode, 0, vertices.size());
	glDisableVertexAttribArray(0);


}

void sgl::Object::setColor(std::vector<glm::vec3> color){
	for(int i = 0; i < color.size(); i++)
		this->color.push_back(color[i]);
	glGenBuffers(1, &(this->colorBuffer));
	glBindBuffer(GL_ARRAY_BUFFER, this->colorBuffer);
	glBufferData(GL_ARRAY_BUFFER, color.size()*sizeof(glm::vec3),&color[0], GL_STATIC_DRAW);
	this->hasColor = true;
}

void sgl::Object::setVertices(std::vector<glm::vec3> vertices){
	for(int i = 0; i < vertices.size(); i++)
		this->vertices.push_back(vertices[i]);
	glGenBuffers(1, &vertexBuffer);
	glBindBuffer(GL_ARRAY_BUFFER, this->vertexBuffer);
	glBufferData(GL_ARRAY_BUFFER, vertices.size()*sizeof(glm::vec3),&vertices[0], GL_STATIC_DRAW);
}


the tutorial that I rewtriting is it:


/*

	Copyright 2010 Etay Meiri

    This program is free software: you can redistribute it and/or modify
    it under the terms of the GNU General Public License as published by
    the Free Software Foundation, either version 3 of the License, or
    (at your option) any later version.

    This program is distributed in the hope that it will be useful,
    but WITHOUT ANY WARRANTY; without even the implied warranty of
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
    GNU General Public License for more details.

    You should have received a copy of the GNU General Public License
    along with this program.  If not, see <http://www.gnu.org/licenses/>.

    Tutorial 03 - First triangle
*/

#include <stdio.h>
#include <GL/glew.h>
#include <GL/freeglut.h>
#include "math_3d.h"

GLuint VBO;

static void RenderSceneCB()
{
    glClear(GL_COLOR_BUFFER_BIT);

    glEnableVertexAttribArray(0);
    glBindBuffer(GL_ARRAY_BUFFER, VBO);
    glVertexAttribPointer(0, 3, GL_FLOAT, GL_FALSE, 0, 0);

    glDrawArrays(GL_TRIANGLES, 0, 3);

    glDisableVertexAttribArray(0);

    glutSwapBuffers();
}


static void InitializeGlutCallbacks()
{
    glutDisplayFunc(RenderSceneCB);
}

static void CreateVertexBuffer()
{
    Vector3f Vertices[3];
    Vertices[0] = Vector3f(-1.0f, -1.0f, 0.0f);
    Vertices[1] = Vector3f(1.0f, -1.0f, 0.0f);
    Vertices[2] = Vector3f(0.0f, 1.0f, 0.0f);

 	glGenBuffers(1, &VBO);
	glBindBuffer(GL_ARRAY_BUFFER, VBO);
	glBufferData(GL_ARRAY_BUFFER, sizeof(Vertices), Vertices, GL_STATIC_DRAW);
}


int main(int argc, char** argv)
{
    glutInit(&argc, argv);
    glutInitDisplayMode(GLUT_DOUBLE|GLUT_RGBA);
    glutInitWindowSize(1024, 768);
    glutInitWindowPosition(100, 100);
    glutCreateWindow("Tutorial 03");

    InitializeGlutCallbacks();

    // Must be done after glut is initialized!
    GLenum res = glewInit();
    if (res != GLEW_OK) {
      fprintf(stderr, "Error: '%s'
", glewGetErrorString(res));
      return 1;
    }

    glClearColor(0.0f, 0.0f, 0.0f, 0.0f);

    CreateVertexBuffer();

    glutMainLoop();

    return 0;
}



if some one can find the error please help me!

I found the error, is that I using as data of vertexbuffer a copy of the vector that I pass as parameter, so the right code will be it:


sgl::Object::Object(std::vector<glm::vec3> vertices){
	for(int i = 0; i < vertices.size(); i++)
		this->vertices.push_back(vertices[i]);
	
	glGenBuffers(1, &vertexBuffer);
	glBindBuffer(GL_ARRAY_BUFFER, this->vertexBuffer);
	glBufferData(GL_ARRAY_BUFFER, this->vertices.size()*sizeof(glm::vec3),&(this->vertices[0]), GL_STATIC_DRAW);
}