array als FunktionsParameter übergeben



  • Hey,

    wie kann ich einen Array einer Funktion übergeben, ohne diesen vorher zu definieren...

    #include <iostream>
    
    using namespace std;
    
    int Test(int iNum, char* pc)
    {
    	for(int i=0;i<iNum;i++)
    	{
    		char ac[2];
    		ac[1]='\0';
    		ac[0]=pc[i];
    
            cout << ac;
    	}
    }
    
    int main()
    {
    	Test(5, {'a','b','c','d','e'});  // So soll es sein
    
    	char aC[]={'a','b','c','d','e'};
    	Test(5,aC);  // So nicht
    
    	int i;
    	cin >> i;
    
    	return 0;
    }
    

    Danke,

    12_33



  • Das ist nicht im Standard vorgesehen.

    MFG



  • man kann aber den ersten parameter als int machen und dann
    unbestimmt viele char mit ...

    z.B.
    foo(int i, char c...){}
    oder so ähnlich



  • Naja, vllt. geht es ja auch anders...

    Ich habe eine Struktur von Werten, z.B. so...

    class B
    {
    int m_i;
    };
    
    class A
    {
    public
    vector<B> m_Bs;
    vector<B> m_B2s;
    
    A(int iNumB1s, int iNumB2s, B* pB1s, B* pB2s)
    {
    //...
    }
    };
    

    Nun möchte ich eine globale Variable vom Typ A haben, mit 100 B1s und 100B2 oder mehr/weniger. Da bringt es es natürlich nicht, erstmal 200Bs zu deklarieren um diesen dann dem Konstruktor zu übergeben (?, Speicherverschwändung).

    A g_A;
    g_A=A(2, &(B(),B()), 0,NULL);
    

    Soetwas wäre doch viel besser...



  • Wenn die B's alle unterschiedlich erzeugt werden, d.h. mit unterschiedlichen Konstruktoraufrufen, dann wirst Du irgendwo alle Konstruktoraufrufe hinschreiben müssen.

    Wenn die B's, so wie ich das verstanden habe, aber alle gleich sind, dann reicht doch eine Schleife und die Übergabe nur eines B Objektes (als Vorlage) und die Anzahl der Objekte, die dem Vektor hinzugefügt werden sollen.


Anmelden zum Antworten