Toon posts:

[C++/MFC] Vector probleem

Pagina: 1
Acties:
  • 54 views sinds 30-01-2008

Verwijderd

Topicstarter
Een tijdje geleden heb ik een programmaatje gemaakt in een Dosbox.
Hierbij heb ik gebruik gemaakt van een vector waarin ik objecten plaatste.

Nu ben ik bezig met de applicatiewizzard van MSVC en probeer weer een vector te
gebruiken. Wat ik vreemd vind is dat er geen foutmelding optreedt wanneer
ik de vector declareer:

code:
1
std::vector<Rekening> rekeningen;


Verder kan ik ook een nieuw object van Rekening aanmaken.
Maar wanneer ik 'rekeningen' wil aanspreken door bijvoorbeeld de size methode te gebruiken, of een object te pushen, krijg ik een foutmelding.

error C2065: 'rekeningen' : undeclared identifier ... Dit betekent toch dat 'rekeningen' niet gedeclareerd is.

  • Shadowman
  • Registratie: Januari 2002
  • Niet online
werkt hier gewoon. Kun je een stukje code geven waar het fout gaat? Verder kun je ook is proberen om het te declareren als een pointer en kijken of dit het probleem oplost.

Als het niet is gedeclareerd kan het ook ergens in een functie gedeclareerd en daarna buiten die functie worden aangeroepen.

  • farlane
  • Registratie: Maart 2000
  • Laatst online: 22-05 16:53
Gebruik je rekeningen in dezelfde compilation unit als waar ie gedeclareerd is?
Zelfde namespace?

Somniferous whisperings of scarlet fields. Sleep calling me and in my dreams i wander. My reality is abandoned (I traverse afar). Not a care if I never everwake.


Verwijderd

Topicstarter
Ik heb het als volgt gedaan:

code:
1
2
3
4
5
6
7
BOOL CEindopdrachtDlg::OnInitDialog()
{

aantalRekeningen = 0;
std::vector<Rekening> rekeningen;

}


Ik gebruik een button.. tja.. wat membervariabelen die afgevangen worden.

code:
1
2
3
4
5
6
7
8
9
void CEindopdrachtDlg::OnToevoegen() 
{

// TODO: Add your control notification handler code here    
Rekening* myRekening = new Rekening(m_strAchternaam, m_strVoorletters);
rekeningen.push_back(*myRekening);
aantalRekeningen++;
        
}


Mis ik nou iets ofzo.. :?

  • Shadowman
  • Registratie: Januari 2002
  • Niet online
Het gaat fout omdat je de vector declareerd in een functie. Als je die vector definieert in je class dan kan die in elke functie worden aangeroepen. Nu kan de vector alleen worden gebruik in de functie waar die is gedeclareerd.

zal dan waarschijnlijk zoiets worden:
C++:
1
2
3
4
class CEindopdrachtDlg {
 std::vector<Rekening> rekeningen;
 [..]
};

[ Voor 5% gewijzigd door Shadowman op 11-02-2004 15:21 ]


Verwijderd

Topicstarter
hmmm is dat niet vreemd omdat de wizzard in principe ook al aangeeft
waar je initialiseert:

code:
1
2
3
4
BOOL CEindopdrachtDlg::OnInitDialog()
{
     // TODO: Add extra initialization here
}


deze methode wordt toch gebruikt om 'Dialog' te initialiseren.
Ik heb ook geprobeerd om idd een andere methode binnen de class te gebruiken.
Het meest logische leek me de onderstaande methode omdat er meer variabelen worden geinitialiseerd. Ik krijg dezelfde foutmelding.

code:
1
2
3
4
5
6
7
8
9
10
11
CEindopdrachtDlg::CEindopdrachtDlg(CWnd* pParent /*=NULL*/)
    : CDialog(CEindopdrachtDlg::IDD, pParent)
{
    //{{AFX_DATA_INIT(CEindopdrachtDlg)
    m_strAchternaam = _T("");
    m_strVoorletters = _T("");
    m_intBedrag1 = 0;
    m_intBedrag2 = 0;
........ etc
                
}

  • curry684
  • Registratie: Juni 2000
  • Laatst online: 12-05 22:23

curry684

left part of the evil twins

Nofi, maar koop een boek.

Je hebt echt geen idee hoe C en C++ in mekaar zitten, dus dit topic gaat nergens heen.

Professionele website nodig?

Pagina: 1

Dit topic is gesloten.