PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Globale Operatorüberladung bei Pointer



ak131554
23-01-2011, 23:03
Hallo,

ich möchte in meinem Programm mit Arrays arbeiten, deren Größe ich zur Compilezeit nicht kenne. Diese Arrays, sie haben zur Laufzeit alle die gleiche Größe, möchte ich nun mittels Operatoren addieren, subtrahieren usw.

Der entsprechende Code


cxsc::rmatrix* operator+(cxsc::rmatrix* const& lhs, cxsc::rmatrix* const& rhs)
{
add(lhs, rhs);
}

gibt mir folgende Fehlermeldung


error C2803: Operator '+' muss mindestens einen formalen Parameter vom Typ Klasse haben

VS 2010 sagt mir noch, dass ein Operator, der kein Member ist, einen Parameter erfordert, der einen Klassen- oder Enumerationstyp hat. Natürlich könnte ich das Feld jetzt in eine Klasse kapseln, aber das möchte ich nicht, da ich schon so programmieren will, dass das Programm zeit- und speicheroptimiert ist.
Habe ich eine Möglichkeit übersehen oder geht es wirklich nicht, arrays mittels Operatoren zu addieren? In jedem Fall muss mein Programm sowohl auf Windows- als auch auf Unix-Systemen kompilierbar und damit laufbar sein.

anda_skoa
24-01-2011, 10:08
Du könnest statt einem C Array einen Vector benutzen. Das wäre dann ein unterscheidbarer Typ.

Ciao,
_

locus vivendi
24-01-2011, 12:16
Ist das eine Programmierübung deinerseits? Wenn nein, dann benutze doch am besten eine Bibliothek die es schon gibt.