Am Montag, 24. August 2009 11:13:47 schrieb David Weese: > Hallo Hannes, > > bin jetzt wieder zurück. Der Fehler unten kommt von unterschiedlichen > Typen (verschiedene TSpecs) deiner Score-Objekte blastNScoring und > blastPScoring, die nicht ineinander konvertiert werden können. > Versuch den Einzeiler in 2 Zeilen zu schreiben, dann sollte es gehen. Hm, das hatte ich schon ausprobiert, weil ich dann auch dachte, dass der zwei Aufrufe braucht, da die Argumente vielleicht zu zwei unterschiedlichen Funktionen auflösen. Hatte das wohl aber nur an einer Stelle ersetzt... jetzt gehts, danke. Hast du dir bezüglich der lokal-global-Frage schon Gedanken gemacht? Ansonsten habe ich noch ein kleineres Compile-Problem gerade, was irgendwie nicht sehr verständlich ist. Ich hab bei dem Vergleichsoperator noch einen Vergleich eingebaut um nach e-Value zu sortieren, siehe unten. Dazu bekomme ich: razers_withBlast.h:631: error: `.' cannot appear in a constant- expression razers_withBlast.h:631: error: parse error in template argument list Danke! Gruß, Hannes template <typename TReadMatch> struct LessRNoGPos : public ::std::binary_function < TReadMatch, TReadMatch, bool > { inline bool operator() (TReadMatch const &a, TReadMatch const &b) const { // read number if (a.rseqNo < b.rseqNo) return true; if (a.rseqNo > b.rseqNo) return false; #ifdef RAZERS_BLAST // evalue if (a.eValue < b.eValue) return true; if (a.eValue > b.eValue) return false; #endif // genome position and orientation if (a.gseqNo < b.gseqNo) return true; if (a.gseqNo > b.gseqNo) return false; if (a.gBegin < b.gBegin) return true; if (a.gBegin > b.gBegin) return false; if (a.orientation < b.orientation) return true; if (a.orientation > b.orientation) return false; // quality #ifdef RAZERS_MATEPAIRS return a.pairScore > b.pairScore; #else return a.editDist < b.editDist; #endif } };