2016-08-01 17 views
-1

während der Codierung stieß ich auf ein Problem.C++ mit einer "Basis" -Funktion innerhalb einer Überlastfunktion

Ich verwende projektiven 2D-Raum (d. H. 2D-Punkte (x, y) und 3D-Punkte (x, y, w)). Ich habe auch eine Funktion, die einen projektiven Punkt (3D) aufnimmt. Zum besseren Lesen und um Casting zu vermeiden, habe ich versucht, eine Überladung für diese Funktion zu schreiben, indem ich den 2D-Point nehme und die "base" -Funktion aufruft (einfaches Beispiel). Aber der Compiler kompiliert den Code nicht. Es scheint einen Linkfehler zu geben (LNK 2001).

//"base" function 
foo(3D_pt pt) 
{ 
     //do something with it 
} 

//overloaded function 
foo(2D_pt pt) 
    3D_pt pt3 = 3D_pt(pt.x, pt.y, 1); 
    foo(pt3); 
} 

Irgendwelche Ideen, wie man das macht?

Dank

edit: Der Fehler ist: LNK2001: ungelöst Symbol - foo (2D_pt pt)

+0

Was ist der Fehler? – selbie

+0

LNK 2001 - ungelöstes externes Symbol. – NewTech

+1

@NewTech Dies ist nicht genug, post den vollständigen Fehler. Welches Symbol ist nämlich nicht genau aufgelöst? – Paul

Antwort

3

Das einzige Problem in dem entsandten Code ist:

# 1: Ihre Klasse Namen (2D_pt und 3D_pt) beginnen mit einer Nummer, während ein Bezeichner in C++ dies nicht tun sollte (Cplusplus.com).

# 2: Die Funktionen foo haben keinen Rückgabetyp.

# 3: { fehlt in foo(2D_pt).

Nach der Befestigung baut alles ohne Probleme auf: ideone.

+0

Danke. Es scheint einen anderen Fehler zu geben als ... Ich denke, ich muss meinen Code überprüfen. – NewTech