Club Builder - Foros de discusión Club Builder
Foro de C++Builder en español
 
 FAQFAQ   BuscarBuscar   MiembrosMiembros   Grupos de UsuariosGrupos de Usuarios   RegistrarseRegistrarse 
 PerfilPerfil   Entra para ver tus mensajes privadosEntra para ver tus mensajes privados   EntrarEntrar 

Función swap

 
Publicar nuevo tema   Responder al tema    Foros de discusión -> Consultas
Ver tema anterior :: Ver tema siguiente  
Autor Mensaje
Mensaje    Asunto: Función swap Responder citando

Estaba tratando de utilizar la función swap en Builder 5; creo que todos sabéis cual es su misión: intercambiar los valores de dos variables. Según la ayuda del propio Builder se usa así:
Código:
#include <algorithm>
template <class>
void swap (T& a, T& b);

El problema que tengo es que al incluir ese código en mi programa me da este error de compilación en el fichero Consts.hpp:
Cita:
[C++ Error] Consts.hpp(18): E2040 Declaration terminated incorrectly

y dicha línea contiene este código:
Código:
namespace Consts     << Este es la línea 18
{
//-- type declarations -------------------------------------------------------
//-- var, const, procedure ---------------------------------------------------
extern PACKAGE System::ResourceString _SOpenFileTitle;
#define Consts_SOpenFileTitle System::LoadResourceString(&Consts::_SOpenFileTitle)
extern PACKAGE System::ResourceString _SAssignError;

etc.

¿Alguna idea de como resolver este problema? Ya sé que es una tontería porque crearse la función es muy sencillo, pero si ya viene implementada...
_________________
Un saludo

Necesitamos tu ayuda: Envía AI al 27595 (Coste 1,20 euros + IVA)
Volver arriba
Ver perfil de usuario Enviar mensaje privado Enviar email
Mensaje    Asunto: Responder citando

Hay que añadir la cabecera: #include <algorithm>

Y para usarlo:

Código:
    int a = 10, b = 20;
    std::swap(a, b);
Volver arriba
Ver perfil de usuario Enviar mensaje privado
Mensaje    Asunto: Responder citando

Gracias Leo. La cabecera la había puesto; me faltaba el std::. Sin embargo me sigue dando errores de compilación. He probado a poner estas líneas, al principio del formulario, de diversas formas:
Código:
template <class>
#include <algorithm>
#include <vcl.h>
#pragma hdrstop

Bien el template después de todos los includes; el #include <algorithm> donde se ve o debajo del vcl.h; da lo mismo: siempre da errores de compilación, bien el que indicaba antes, bien en _stdef.h
_________________
Un saludo

Necesitamos tu ayuda: Envía AI al 27595 (Coste 1,20 euros + IVA)
Volver arriba
Ver perfil de usuario Enviar mensaje privado Enviar email
Mensaje    Asunto: Responder citando

Basta solo con la cabecera que te indicaba. Creo que tu usas la versión 5, por si acaso lo he probado en la 4 ya que no tengo la 5, y funciona bien. Así que no se a que puede ser debido que no te vaya bien.

Has probado en un proyecto vacío para descartar que sea de otro tema ?
Volver arriba
Ver perfil de usuario Enviar mensaje privado
Mensaje    Asunto: Responder citando

Lo cierto es que no. Lo haré y ya te digo como ha ido.
Efectivamente uso Builder 5 y lo de poner las otras cabeceras es porque en la ayuda de la función lo incluía:
Cita:
Summary
Exchanges values.

Synopsis
#include <algorithm>
template <class>
void swap (T& a, T& b);

Description
The swap algorithm exchanges the values of a and b. The effect is:

T tmp = a
a = b
b = tmp

Pero no viene ningún ejemplo de muestra.
_________________
Un saludo

Necesitamos tu ayuda: Envía AI al 27595 (Coste 1,20 euros + IVA)
Volver arriba
Ver perfil de usuario Enviar mensaje privado Enviar email
Mensaje    Asunto: Responder citando

Angel escribió:
Pero no viene ningún ejemplo de muestra.

Si, la verdad que es de pena en algunos casos la documentación de Embarcadero. Aunque ha mejorado un poco en las ultimas versiones en cuanto a ejemplos. Pero bueno, en este caso como es una función de la librería estándar de C++ se puede conseguir mejor información en otros lugares..

Microsoft en cambio tiene documentación y ejemplos para regalar:

http://msdn.microsoft.com/en-us/library/zfffh4x3.aspx

Otras referencias:

http://www.cplusplus.com/reference/algorithm/swap/
http://www.sgi.com/tech/stl/swap.html
Volver arriba
Ver perfil de usuario Enviar mensaje privado
Mensaje    Asunto: Responder citando

_Leo escribió:
Has probado en un proyecto vacío para descartar que sea de otro tema ?

En un proyecto vacío funciona perfecto. Investigaré que puede estar chocando con esta definición. Gracias por la ayuda Leo.
_________________
Un saludo

Necesitamos tu ayuda: Envía AI al 27595 (Coste 1,20 euros + IVA)
Volver arriba
Ver perfil de usuario Enviar mensaje privado Enviar email
Mostrar mensajes de anteriores:   
Cambiar a:  
No puedes publicar temas nuevos en este foro
No puedes responder a temas en este foro
No puedes editar tus mensajes en este foro
No puedes borrar tus mensajes en este foro
No puedes votar en las encuestas de este foro


Hosting WordPress Indedmedia desde 3,99 €
© 2002–2026 Club Builder · Funciona con phpBB.