uint8_t oder unsigned char linking-Fehler

Ich bin mit der template-Funktion:

template<typename T> void func(const T& value)
{
    obj->func(value);
}

wo obj ist ein Objekt der Klasse:

void my_object::func(int64_t value) { ... }
void my_object::func(uint64_t value) { ... }
void my_object::func(uint32_t value) { ... }
void my_object::func(uint16_t value) { ... }
void my_object::func(uint8_t value) { ... }

Ist das problem mit uint8_t überlastung der my_object::func() überschreiben. Linker beschwert sich über nicht aufgelöste externe Symbole zu überlastungen, die sollte haben unsigned char parameter.

Sollte ich ersetzen uint8_t überlastung mit unsigned char überlastung?

Edit: Gerade eben bemerkt, dass der linker beschwert sich über uint64_t und int64_t zu.

Ich kompilieren unter Windows mit MSVC++ 2008 Express.

Edit: Entschuldigung, ich erklärt my_object::func(uint8_t Wert) - Funktion (und andere), aber ich nicht definiert.

Übrigens, was ist der compiler?
MSVC++ 2008 Express
Was ist der exakt Fehlermeldung, die Sie bekommen?
Sie sollten versuchen, zu reduzieren die problem-Bereich und geben Sie weitere details darüber, was Sie eigentlich tun. Ist es wirklich, weil die Vorlage - was passiert, wenn Sie eine direkte Aufruf von obj::func() statt? Wie definieren Sie Ihre Klasse, und wo und wie haben Sie es umgesetzt? Mit nur die Beschreibung, die Sie Menschen, die würde haben, zu erraten, was eigentlich passiert ist.
Stellen Sie sicher, dass Sie die gleichen Kopfzeilen und damit die Typdefinitionen dieser integer-Typen. MSVC hat Mängel mit, wie es behebt äquivalente Typen. In bestimmten Fällen zwei Typen sind in C++ identisch, aber MSVC hat verschiedene interne Typen für Sie. Die internen Typen machen es dem linker, also ein Missverhältnis.

InformationsquelleAutor mnn | 2011-01-01

Schreibe einen Kommentar