[C++] declareren array in 'protected' en maken in constructr

Pagina: 1
Acties:

  • Duim
  • Registratie: December 2001
  • Laatst online: 23-07-2025

Duim

Thumbs up!

Topicstarter
ik declareer in mij FlowObject.h file mijn arrays van floats (float* p_inputvector;):


C++:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
   
class FlowObject
{
public:
    FlowObject();
    ~FlowObject();
    FlowObject(const FlowObject& orig);
    FlowObject& operator=(const FlowObject& orig);  
    

protected:
    float* p_inputvector;
    float* p_outputvector;
};

 


Deze wil ik in de class gebruiken en gebruik in de constructor dus:
C++:
1
2
3
4
5
6
7
8
9
10
11
12
13
  
FlowObject::FlowObject()
{
      p_inputvector  = new float[10];
      p_outputvector = new float[10];
           for (int i=0;i<10;i++)
           {
                   p_inputvector[i]=0;
                   p_outputvector[i]=0;
           }    

}
 


Alles compileert en bouwt prima, toch geefttie bij de uitvoer hier een "unhandled exception at..."

Is er wat jullie betreft iets fout aan het bovenstaande? Of moet ik de fout ergens anders zoeken?

  • MSalters
  • Registratie: Juni 2001
  • Laatst online: 09-04 22:08
Ik gok dat je fout in de copy ctor zit. Als je zelf met pointer gaat stoeien, dan moet je die ook schrijven (en assignment, en destructor).

Gebruuik gewoon een std::vector<float>, dan heb je al dat gedoe niet.

Man hopes. Genius creates. Ralph Waldo Emerson
Never worry about theory as long as the machinery does what it's supposed to do. R. A. Heinlein


  • GX
  • Registratie: Augustus 2000
  • Laatst online: 14-05-2025

GX

Nee.

Ik krijg helemaal geen error wanneer ik het compile en uitvoer. Zou je kunnen zeggen welke regel er fout gaat zodat we wat meer inzicht kunnen krijgen.

Los daarvan kan je allicht beter de STL functies gebruiken inderdaad. Lekker simpel. Ik weet alleen niet wat de performance impact op je applicatie zal zijn.

@MSalters
Het gaat hier over de std::vector delete/insert ops, niet over array delete/insert

[ Voor 15% gewijzigd door GX op 01-01-2006 14:01 ]


  • jos707
  • Registratie: December 2000
  • Laatst online: 18-04 13:20
Zolang je een std::vector niet gebruikt voor heel veel delete/insert operaties maakt het de performantie
weinig uit. In het andere geval is een gewone array wel sneller.

  • Soultaker
  • Registratie: September 2000
  • Laatst online: 14-04 03:50
Om concreet antwoord te geven op de vraag van de topicstarter (;)): de code die je post is zeker weten goed, dus de fout zit ergens anders.

Wat het dan wel is, is lastig te zeggen zo; het kan van alles zijn.

  • MSalters
  • Registratie: Juni 2001
  • Laatst online: 09-04 22:08
jos707 schreef op zaterdag 31 december 2005 @ 14:15:
Zolang je een std::vector niet gebruikt voor heel veel delete/insert operaties maakt het de performantie weinig uit. In het andere geval is een gewone array wel sneller.
:D Hoe wil je uberhaupt 1 delete/insert doen op een gewone array? Een int[10] bevat altijd 10 elementen.

Man hopes. Genius creates. Ralph Waldo Emerson
Never worry about theory as long as the machinery does what it's supposed to do. R. A. Heinlein


  • jos707
  • Registratie: December 2000
  • Laatst online: 18-04 13:20
MSalters schreef op zaterdag 31 december 2005 @ 17:48:
[...]

:D Hoe wil je uberhaupt 1 delete/insert doen op een gewone array? Een int[10] bevat altijd 10 elementen.
ja idd maar ik doelde door de elementen te kopieren naar een nieuwe grotere/kleinere array bijvoorbeeld. Nu ik dacht dat die die insert en delete operaties die een vector voor jouw allemaal automatisch doet duurder waren.

  • Duim
  • Registratie: December 2001
  • Laatst online: 23-07-2025

Duim

Thumbs up!

Topicstarter
Voor eerst bedankt, hier gaat dus niets mis, er gaat ergens anders iets mis. Ik hou jullie op de hoogte.

  • MSalters
  • Registratie: Juni 2001
  • Laatst online: 09-04 22:08
jos707 schreef op zaterdag 31 december 2005 @ 18:27:
[...]
ja idd maar ik doelde door de elementen te kopieren naar een nieuwe grotere/kleinere array bijvoorbeeld. Nu ik dacht dat die die insert en delete operaties die een vector voor jouw allemaal automatisch doet duurder waren.
Waarom zou het kopieren van een float duurder zijn als ie in een vector zit? Ik kan me situaties voorstellen waarin het goedkoper is (betere alignment) maar duurder lijkt me erg onwaarschijnlijk.

Man hopes. Genius creates. Ralph Waldo Emerson
Never worry about theory as long as the machinery does what it's supposed to do. R. A. Heinlein

Pagina: 1