| Ver tema anterior :: Ver tema siguiente |
| Autor |
Mensaje |
Angel Master


Registrado: 15 Abr 2003Mensajes: 2311Ubicación: Toledo (España)
|
Publicado: Mie 06 Jun, 2012 7:16 am Asunto: Función swap |
|
|
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 |
|
 |
_Leo Site Admin

Registrado: 11 Ago 2002Mensajes: 1875Ubicación: Lanzarote - Islas Canarias (España)
|
Publicado: Mie 06 Jun, 2012 8:45 am Asunto: |
|
|
Hay que añadir la cabecera: #include <algorithm>
Y para usarlo:
| Código: | int a = 10, b = 20;
std::swap(a, b);
|
|
|
| Volver arriba |
|
 |
Angel Master


Registrado: 15 Abr 2003Mensajes: 2311Ubicación: Toledo (España)
|
Publicado: Mie 06 Jun, 2012 10:38 am Asunto: |
|
|
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 |
|
 |
_Leo Site Admin

Registrado: 11 Ago 2002Mensajes: 1875Ubicación: Lanzarote - Islas Canarias (España)
|
Publicado: Mie 06 Jun, 2012 9:19 pm Asunto: |
|
|
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 |
|
 |
Angel Master


Registrado: 15 Abr 2003Mensajes: 2311Ubicación: Toledo (España)
|
Publicado: Jue 07 Jun, 2012 9:07 am Asunto: |
|
|
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 |
|
 |
_Leo Site Admin

Registrado: 11 Ago 2002Mensajes: 1875Ubicación: Lanzarote - Islas Canarias (España)
|
|
| Volver arriba |
|
 |
Angel Master


Registrado: 15 Abr 2003Mensajes: 2311Ubicación: Toledo (España)
|
Publicado: Vie 08 Jun, 2012 7:24 am Asunto: |
|
|
| _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 |
|
 |
|