2011-03-13 14 views

Respuesta

33
point mypoint = {0, 1}; 
a.push_back(mypoint); 

O si se le permite, dar point un constructor, para que pueda utilizar un temporal:

a.push_back(point(0,1)); 

Algunas personas se opondrán si se pone un constructor en una clase declarada con struct, y lo convierte en no POD, y tal vez usted no tiene el control de la definición de point. Entonces esta opción podría no estar disponible para usted. Sin embargo, puede escribir una función que proporciona la misma comodidad:

point make_point(int x, int y) { 
    point mypoint = {x, y}; 
    return mypoint; 
} 

a.push_back(make_point(0, 1)); 
+1

¿Cómo funciona la función make_point, no será el MyPoint var fuera del alcance después de la vuelta? –

+0

@VineetDeoraj: 'make_point' devuelve una copia de' mypoint'. –

7
point p; 
p.x = 1; 
p.y = 2; 

a.push_back(p); 

Tenga en cuenta que, dado que a es un vector de puntos (no punteros a ellos), la push_back creará una copia de su punto de estructura - de manera segura p puede ser destruido una vez que sale de alcance.

1
point foo; //initialize with whatever 
a.push_back(foo); 
Cuestiones relacionadas