<div dir="ltr">Hola Humberto,<div class="gmail_extra"><br><div class="gmail_quote">2014/1/21 Humberto Boone Abdo <span dir="ltr"><<a href="mailto:humbba1@yahoo.com" target="_blank">humbba1@yahoo.com</a>></span><br><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex">
<div><div style="font-size:12pt;font-family:HelveticaNeue,'Helvetica Neue',Helvetica,Arial,'Lucida Grande',sans-serif"><div>Buenas,</div><div><span style="font-family:arial;font-size:small"> </span></div></div>
</div></blockquote><div><br></div><div>[CORTE]</div><div><br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex">
<div><div style="font-size:12pt;font-family:HelveticaNeue,'Helvetica Neue',Helvetica,Arial,'Lucida Grande',sans-serif"><div></div><div style="font-size:16px;background-color:transparent;font-family:HelveticaNeue,'Helvetica Neue',Helvetica,Arial,'Lucida Grande',sans-serif">
<span>Mis dudas son que no estoy seguro si hice bien el constructor y no se como hacerle para que cuando pide la
 descripción se puedan introducir caracteres espacio y no sólo la primera palabra que escribo.(Bueno  intente usar la función getline pero no me funcionó)</span></div></div></div></blockquote><div><br></div><div>Esto tiene que ver con el uso de 'cin >>'. Como usas la clase 'string', usa la función global, 'getline()'. Esto es,</div>
<div><br></div><div>string str;</div><div><br></div><div>getline( cin, str );</div><div><br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex">
<div><div style="font-size:12pt;font-family:HelveticaNeue,'Helvetica Neue',Helvetica,Arial,'Lucida Grande',sans-serif"><div style="font-size:16px;background-color:transparent;font-family:HelveticaNeue,'Helvetica Neue',Helvetica,Arial,'Lucida Grande',sans-serif">
<span>Tampoco entiendo si cree bien los objetos, porque cuando dejaba los paréntesis vacíos me daba error y lo que hice fue ponerle ("","",0,0) y así fue como funcionó pero no estoy seguro si sea una buena idea optar por eso.</span></div>
</div></div></blockquote><div><br></div><div>Te da un error, porque estableciste que el constructor recibe 4 parámetros. Si no das los parámetros, entonces no sabe qué hacer, porque no hay otra forma de invocar el constructor.<br>
<br>Una solución es crear otro constructor que no acepte ningún parámetro. Por ejemplo,</div><div><br></div><div>class Factura<br>{<br>public:<br>  Factura() : nompieza(""), descpieza(""), cantart(0), precioart(0)  {}</div>
<div>  Factura( const string &pieza, const string &desc, int cant, int precio )  {...}</div><div>  ...</div><div>};</div><div><br></div><div>Además, como puedes ver, te he cambiado los tipos de los parámetros para pasar los objetos como 'const string &', en lugar de 'string', porque entonces estás creando copias de los objetos, para luego crear otra copia al hacer esta asignación:</div>
<div><br></div><div>nompieza = pieza;</div><div>descpieza = desc;</div><div><br></div><div><br></div><div>Analizando el código fuente, veo algunas cosas más a destacar:<br><br>- Para el constructor, invocas otras funciones miembro para asignar los valores. Otra opción es usar la lista inicializadora (del constructor):<br>
<br>Factura( const string &pieza, const string &desc, int cant, int precio ) : nompieza(pieza), descpieza(desc), cantart(cant), precioart(precio)</div><div>{</div><div>  // Puedes seguir otros pasos</div><div>  ...</div>
<div>}</div><div><br></div><div>- A la hora de establecer el precio y de calcular el monto, usas una sentencia 'if'. Otra forma es usando el operador condicional. Por ejemplo,</div><div><br></div><div>void establecerPrecio( int precio )</div>
<div>{<br></div><div>  precioart = precio < 0 ? 0 : precio;</div><div>}</div><div><br></div><div>- Tienes un error en 'obtenerMontoFactura()'. Escribes:</div><div><br></div><div>monto = cantart + precioart;<br>
</div><div><br></div><div>cuando debe ser una multiplicación.</div><div><br></div><div>- En 'main()', instancias el objeto 'factura1', para luego invocar las funciones miembro para "establecer" los datos miembro. Otra forma es instanciar el objeto cuando tengamos los datos necesarios. Por ejemplo,</div>
<div><br></div><div>getline( cin, numpieza );</div><div>...</div><div>cin >> precioa;</div><div><br></div><div>Factura factura1( numpieza, desc, canta, precioa );</div><div><br></div><div>Instanciamos el objeto justo cuando necesitemos usarlo.</div>
<div><br></div><div><br></div><div>Espero que esto te oriente.</div><div><br></div><div>Steven</div><div><br></div></div></div></div>