delorie.com/archives/browse.cgi   search  
Mail Archives: djgpp/1998/10/13/08:08:30

Message-Id: <3.0.2.32.19981013140619.0077545c@tex.odd.it>
X-Sender: delfo AT tex DOT odd DOT it
X-Mailer: QUALCOMM Windows Eudora Pro Version 3.0.2 (32)
Date: Tue, 13 Oct 1998 14:06:19 +0200
To: djgpp AT delorie DOT com
From: Stefano Del Furia <delfo AT tech-center DOT com>
Subject: Error: Abort ! during compiling when using vector<T>(n) and
Optimization
Mime-Version: 1.0
Reply-To: djgpp AT delorie DOT com

Dear Users,
i have tried to compile this little program:

/////////////////////////
/*
Programma per il disegno di forma grafiche
Ver. 1.0
Orientato agli oggetti
Ver. 2.0
Aggiunta gestione colori
Ver. 2.1
Aggiunta gestione riempimenti e ed oggetti statici
Ver. 2.2
Aggiunta numerazione progressiva oggetti
Ver. 2.3
Aggiunta funzioni per ALLEGRO
Ver. 2.4
Aggiunta STRINGHE e VECTOR
Ver. 2.5
Aggiunta MAP e rimosso VECTOR + funzione ridisegna
Ver. 2.6

Aggiunta Rimozione oggetti tramite iteratore
Ver. 2.7

Stefano Del Furia

23 Settembre 1998

*/
#include <iostream.h>
#include <strstream.h>
#include <conio.h>
#include <stdlib.h>
#include <stdio.h>
#include <allegro.h>
#include <strclass.h>
#include <map>
#include <vector>
#include <iterator>
#include <algo.h>
#include <function.h>


class Oggetto;
// typedef int COLORS;
typedef int FILL_PATTERNS;

typedef map<int,String,less<int> > TMString;
typedef vector<Oggetto> TVOggetto;

const MAX_AZI=11;
const MAX_PARAM=5;

const ESCI=0;
const RETT=1;
const QUAD=2;
const CERC=3;
const PUNT=4;
const LINE=5;
const COLO=6;
const TRIE=7;
const CRIE=8;
const RIDI=9;
const CANC=10;

TMString strAzioni;

int iParam[MAX_AZI];

int VParam_Input[MAX_PARAM];

class Oggetto {
	private:
		long int lCodiceOggetto;
		int iTipoOggetto;
		int iXinf;
		int iYinf;
		int iXsup;
		int iYsup;
		COLORS iColoreLinea;
		COLORS iColoreRiemp;
		FILL_PATTERNS iTipoRiemp;
		static long int lSNumProgreOgg;
	public:
		static COLORS SColoreLinea;
		static COLORS SColoreRiemp;
		static FILL_PATTERNS STipoRiemp;

	public:
		Oggetto();
		Oggetto(int iTo, int iXinf, int iYinf, int iXsup=0, int iYsup=0);
		Oggetto(const Oggetto & OgCopia);
		Oggetto & operator=(const Oggetto & OgCopia);
		~Oggetto();
		void OgDisegna();
		void SetColoreLinea(COLORS lc);
		void SetColoreRiemp(COLORS fc = WHITE);
		void SetTipoRiemp(FILL_PATTERNS fp = DRAW_MODE_SOLID);
		long int GetCodiceOggetto();
		void StampaInfoOggetto(int c=10, int r=10);
};

Oggetto::Oggetto()
{
lSNumProgreOgg++;
lCodiceOggetto=lSNumProgreOgg;
iTipoOggetto=ESCI;
iXinf=0;
iYinf=0;
iXsup=0;
iYsup=0;
iColoreLinea=SColoreLinea;
iColoreRiemp=SColoreRiemp;
iTipoRiemp=STipoRiemp;

};


Oggetto::Oggetto(int iTo,int iXcinf, int iYcinf, int iXcsup, int iYcsup)
{
lSNumProgreOgg++;
lCodiceOggetto=lSNumProgreOgg;
iTipoOggetto=iTo;
iXinf=iXcinf;
iYinf=iYcinf;
iXsup=iXcsup;
iYsup=iYcsup;
iColoreLinea=SColoreLinea;
iColoreRiemp=SColoreRiemp;
iTipoRiemp=STipoRiemp;
};

Oggetto::Oggetto(const Oggetto & OgCopia)
{
/*
// VEcchia versione con incremento del contatore
lSNumProgreOgg++;
lCodiceOggetto=lSNumProgreOgg;
*/
lCodiceOggetto=OgCopia.lCodiceOggetto;
iTipoOggetto=OgCopia.iTipoOggetto;
iXinf=OgCopia.iXinf;
iYinf=OgCopia.iYinf;
iXsup=OgCopia.iXsup;
iYsup=OgCopia.iYsup;
iColoreLinea=OgCopia.iColoreLinea;
iColoreRiemp=OgCopia.iColoreRiemp;
iTipoRiemp=OgCopia.iTipoRiemp;
};

Oggetto& Oggetto::operator=(const Oggetto & OgCopia)
{
if (this!=&OgCopia)
	{
        /*
        // VEcchia versione con incremento del contatore
        lSNumProgreOgg++;
        lCodiceOggetto=lSNumProgreOgg;
        */
        lCodiceOggetto=OgCopia.lCodiceOggetto;
        iTipoOggetto=OgCopia.iTipoOggetto;
	iXinf=OgCopia.iXinf;
	iYinf=OgCopia.iYinf;
	iXsup=OgCopia.iXsup;
	iYsup=OgCopia.iYsup;
	iColoreLinea=OgCopia.iColoreLinea;
	iColoreRiemp=OgCopia.iColoreRiemp;
	iTipoRiemp=OgCopia.iTipoRiemp;
	}
return *this;
};

Oggetto::~Oggetto()
{
};

void Oggetto::OgDisegna()
{
/*
setcolor(iColoreLinea);
setfillstyle(iTipoRiemp,iColoreRiemp);
*/
switch (iTipoOggetto)
       {
       case ESCI :
            break;
       case RETT : rect (screen,iXinf,iYinf,iXsup,iYsup,iColoreLinea);
            break;
       case QUAD : rect
(screen,iXinf,iYinf,iXinf+iXsup,iYinf+iXsup,iColoreLinea);
            break;
       case CERC : circle (screen,iXinf,iYinf,iXsup,iColoreLinea);
            break;
       case PUNT : putpixel (screen,iXinf,iXsup,iColoreLinea);
            break;
       case LINE : line (screen,iXinf, iYinf, iXsup, iYsup,iColoreLinea);
            break;
       default:    break;
 }
};

void Oggetto::SetColoreLinea(COLORS lc)
{
iColoreLinea=lc;
};

void Oggetto::SetColoreRiemp(COLORS fc)
{
iColoreRiemp=fc;
if (iColoreRiemp>bitmap_color_depth(screen))
	iColoreRiemp=WHITE;
};

void Oggetto::SetTipoRiemp(FILL_PATTERNS fp)
{
iTipoRiemp=fp;
};

long int Oggetto::GetCodiceOggetto()
{
return lCodiceOggetto;
};

void Oggetto::StampaInfoOggetto(int c,int r)
{

char tmp[80];
sprintf(tmp,"Codice %ld ",lCodiceOggetto);
textout(screen, font, tmp ,c*8,r*20,WHITE);
sprintf(tmp,"%d %d %d %d %d ",iTipoOggetto,iXinf,iYinf,iXsup,iYsup);
textout(screen, font, tmp ,c*8,r*20+10,WHITE);

};


COLORS Oggetto::SColoreLinea=WHITE;
COLORS Oggetto::SColoreRiemp=WHITE;
FILL_PATTERNS Oggetto::STipoRiemp=DRAW_MODE_SOLID;
long int Oggetto::lSNumProgreOgg=0;

int iCreaOggetto(TVOggetto &, int, int []);


int iComando(int []);
void vCaricaParametriGlobali(TMString & , int []);
void Azione(int , int [MAX_PARAM], TVOggetto &);
void Ridisegna(TVOggetto & );

int i;
int GFX_Error;
int iUscita;

TVOggetto VOggetti(10);

main()
{
return 0;
}

/////////////////////


if i lunch gxx -g -O -c pro.cpp -o pro1.o

if i write the line below,i obtain an Abort ! error:
TVOggetto VOggetti(10);


but if i write
TVOggetto VOggetti;

all seems to work


the only way to compile 
TVOggetto VOggetti(10);

is executing another level of optimization:
gxx -g -O2 -c pro.cpp -o pro1.o

but in this way i'm unable to make step-debugging.
i have the same behaviour if i write in the main program:
VOggetti.resize(10);

There a solution?

TIA
 >>mailed by                              ''~``
 Stefano Del Furia                       ( o o )
  __________________________________.oooO--(_)--Oooo._
 | ___/ / _/__ www.geocities.com/SiliconValley/3546/  |
 |/ _  / _(_-< Computer Science Department            |
 |\_,_/_//___/ delfo AT tech-center DOT com  .oooO           |
 |ITIS "E.FERMI" Bibbiena 52010 AR IT (   )   Oooo.   |
 |_____________________________________\ (____(   )___| 
 THEORY is when you know everything     \_)    ) /
        but nothing works.                    (_/
 PRACTICE is when everything works
        but you don't know why.
 Our aim is to join THEORY and PRACTICE:
 (-: NOTHING works and we don't know WHY :-)

- Raw text -


  webmaster     delorie software   privacy  
  Copyright © 2019   by DJ Delorie     Updated Jul 2019