2016-04-15 25 views
-2

Der Code zeigt 2 vorlagenbasierte Funktionen, die tatsächlich gut aussehen. Beide haben die gleiche Syntax, aber nur eine davon ist gültig. Ich habe verschiedene Arten von Implementierungen getestet, aber keiner von ihnen hat mit dem ersten funktioniert. Und bevor Sie fragen: Ich fand keine Lösung, die mir geholfen ...C++ Kompilieren-Fehler C4430

Aber hier haben Sie einen Blick auf den Code:

#pragma once 

#include <exception> 
#include <iostream> 
#ifdef WIN32 
#include <Windows.h> 
#endif //WIN32 
#include <string> 

namespace util { 

    /* ############### */ 
    /* #    # */ 
    /* # For strings # */ 
    /* #    # */ 
    /* ############### */ 



    template<class T = std::string> 
    bool hasPrefix(const T& string, const, T& prefix); 

    template<class T = std::string> 
    bool hasPostfix(const T& string, const T& postfix); 

} 

template<class T> 
bool util::hasPrefix(const T& string, const T& prefix) { 
    //CODE 
} 

template<class T> 
bool util::hasPostfix(const T& string, const T& prefix) { 
    //CODE 
} 

Jetzt Visual Studio gibt mir diese Fehler, wenn ich kompilieren zu versuchen:

Fehler C4430: Fehlender Typspezifizierer - int angenommen!

Aber nur für hasPrefix (...) und nicht für hasPostfix (...)! Ich habe versucht, es ohne static_assert (...) oder mit der for (...) - Schleife zu implementieren. Das Ändern der Kopfzeile oder irgendetwas anderes hat nicht geholfen und ich muss zugeben, dass dieser Fehler für mich nicht einmal Sinn macht, da die zweite Template-Funktion ziemlich gut funktioniert.

hoffe, dass ich mich jemand

Antwort

2
template<class T = std::string> 
bool hasPrefix(const T& string, const, T& prefix); 
//         ^

mehr Aufmerksamkeit auf das, was Sie tun, helfen können.

Der Tippfehler ist offensichtlich, wenn man einfach die Deklaration betrachtet, die funktioniert, und die Deklaration, die nicht funktioniert.

+0

Danke, wie könnte ich das nicht sehen? : / – tistCoder

Verwandte Themen