(C ++ und gcc) Fehler: erwartet Konstruktor destructor, oder Typ-Konvertierung vor 'inline'

StackOverflow https://stackoverflow.com/questions/1227842

  •  22-07-2019
  •  | 
  •  

Frage

Ich habe eine Header-Datei mit einigen Inline-Schablonenverfahren. Ich habe eine Klassendeklaration, um es (nur ein paar statischer Methoden ... es ist eher ein Namespace als eine Klasse), und ich begann, diese Zusammenstellung Fehler bekommen, in einer Datei, die die neue Klasse verwendet.

Es gibt mehrere andere Dateien, die die gleiche H-Datei enthalten, die noch ohne Beanstandung kompilieren.

für den Fehler googeln gibt mir ein paar Links zu Mailinglisten über Bugs auf Projekte, die eine ähnliche Fehlermeldung haben (der einzigen Unterschied scheint zu sein, was der Konstruktor, Destruktor oder Typumwandlung sollte vorangestellt).

Ich bin bereit, über alles zu starten Strippen sonst weg, bis ich eine nackten Knochen minimale Probe habe, so kann ich auf intelligente Weise die Frage stellen, aber ich dachte, ich es die dumme Art und Weise einen Stich nehmen würde zuerst an zu fragen:

Kann mir jemand gibt eine grundlegende Ahnung, was diese Fehlermeldung tatsächlich Mittel , so könnte ich in der Lage sein zu beginnen, es aufzuspüren / Google es?

Nur aus Gründen der Vollständigkeit, das erste Beispiel, wo ich sehe, das sieht mehr oder weniger wie

namespace Utilities
{
   template <typename T> GLfloat inline NormalizeHorizontally(T x)
   {
      GLfloat scaledUp = x*2.0;
      GLfloat result = scaledUp / Global::Geometry::ExpectedResolutionX;
      return result;
   }
}
War es hilfreich?

Lösung

Es bedeutet, dass Sie das „inline“ Schlüsselwort in der falschen Stelle zu setzen. Es muss gehen, bevor die Rückgabetyp der Methode, z.

 template <typename T> inline GLfloat  NormalizeHorizontally(T x)

So einfach ist das.

Der Grund, dass Sie diese Nachricht bekam auf einer Übersetzungseinheit und andere nicht sein kann, weil es sich um eine Templat-Funktion ist, die nicht von den anderen Kompilierungseinheiten instanziiert wurde.

Im Allgemeinen, wenn Sie eine „erwartete bla bla vor foobar“ Fehlermeldung erhalten, ist dies ein Parsing-Fehler und es gibt oft eine einfache Syntax Fehler wie zum Beispiel ein fehlendes Semikolon, fehlende Klammer oder misordered Schlüsselwörter. Das Problem ist in der Regel irgendwo um den Abschnitt erwähnt, könnte aber tatsächlich eine Weile zurück, also manchmal muss man für sie jagen.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top