Segfault, vector, insert

Hallo!

Der folgende Code wirft einen fehler:

rna* annealer::anneal(rna strand1, rna strand2, const rna & opponent)
{		

	if(tryAnneal(strand1, strand2, opponent)) {
		std::cout << "true" << std::endl;
                //in der nächsten zeile wird der fehler geworfen
		strand1.getStrand().insert(strand1.getStrand().begin(), strand2.getStrand().begin(), strand2.getStrand().end());
		strand1.isAnnealed = true;
		rna* str = &strand1;
		return str;
	}
	
    //....
	
	return NULL;
}

rna enthält einen vector, der mit getStrand() zurückgegeben wird…

Fehlermeldung: terminate() called after throwing an instance of std::length_error
what(): vector::_M_range_insert

length_error? die gibts doch wenn man über max_size allokieren will? meine vectoren sind um die 10 elemente groß…

hat jemand ideen warum der fehler auftritt?

Ohne das überprüft zu haben:
Versuch den Methodenaufruf ohne ‘*’ zu schreiben. Denn als Zeiger wurde ja ‘rna’ schon vorher deklariert.

Welchen Aufruf meinst du hier?

Oder meinst du den Rückgabetyp rna*?

Ähh, ja, du hast recht - man sollte genauer hinkucken. Meine C++ Zeiten sind schon ne Weile her.

:smiley: