vector< CButton* >



  • Hallo!

    Ich versuche in einem Vector aus Datenbankeinträgen Zeiger auf ein CButton zu erstellen, um diese dann später zur Erzeugung von Buttons zu verwenden. Leider kommt hierbei immer der folgende Fehler:
    CButton::CButton' : Funktion akzeptiert keine 1 Parameter
    Generieren von Code...

    Ich bin jetzt durch die Suche im Forum und Netz schon so schlau geworden, dass die Funktion void ist und daher keine Parameter akzeptiert. Ich habe danach versucht, einen Vector aus CString zu erstellen und diesen danach nochmals CButton zuzuweisen, aber dort entstanden dann Konvertierungsprobleme und andere Fehler.
    Aus diesem Grund und meiner Meinung, dass ich glaube ich auf dem totalen Holzweg bin mit dem 2. Weg, habe ich den ersten Lösungsversuch mal dargestellt, damit ihr einen Überblick bekommt.

    Ich hoffe, dass ich den Code unten richtig dargestellt, zusammengefasst habe und ihr könnt etwas damit anfangen.

    Gruß Edmund

    //KlasseA.h
    ...
    	std::vector< CButton* >kanalliste;
    ...
    
    //KlasseB.h
    ...
        	CString kanal;
            KlasseA m_kanal;
            int k;
    ...
    
    //KlasseB.cpp
    ...
    while(!pDatenbank->IsEOF())
    
    		{
    			for(k=1;k<=10;k++)    //10Button pro Datenbankeintrag sollen erstellt werden
    			{
    			this->kanal.Format("%s_%d",pDatenbank->m_TEST,k);     //m_TEST  ist ein CString
    			this->m_kanal.kanalliste.push_back( new CButton(channel));
    			}
                pDatenbank->MoveNext();
    		}
    
    	this->m_kanal.BtnCreate();
    ...
    


  • Aus der Hilfe (MSDN)

    Der Konstruktor von CButton hat keine Parameter.
    also müsste deine Zeile so aussehen.

    this->m_kanal.kanalliste.push_back( new CButton());

    Wenn Du einen Parameter haben möchtest, dann schreib eine
    eigene Klasse, die ein CButton kapselt. Für die Klasse
    schreibst Du deinen eigenen Konstruktor.

    Du kannst auch deine eigene Klasse von CButton ableiten.

    // Auszug aus der MSDN

    CButton::CButton
    CButton( );

    Remarks

    Constructs a CButton object.

    Example

    // Declare a button object.
    CButton myButton;



  • Oder du rufst Create() auf, bevor du den Button in deinem vector unterbringst:

    int dbpos=0;
    
    while(!pDatenbank->IsEof())
    {
      for(k=1;k<=10;k++)    //10Button pro Datenbankeintrag sollen erstellt werden
      {
        kanal.Format("%s_%d",pDatenbank->m_TEST,k);     //m_TEST  ist ein CString
        CButton* pBtn = new CButton;
        pBtn->Create(kanal,BS_PUSHBUTTON,CRect(...)/*Größe und Position*/,this,ID_BTN0+10*dbpos+k);
        m_kanal.kanalliste.push_back( pBtn );
      }
      ++dbpos;
      pDatenbank->MoveNext();
    }
    


  • Vielen Dank euch Beiden!

    Auf die Idee von CStoll bin ich einfach nicht gekommen.
    Danke für den tollen Tip.

    Gruß Edmundy


Anmelden zum Antworten