ich mit dem folgenden Code-Schnipsel versucht und bekam die Kompilierung-Fehler, wie unten beschriebenÜbersetzungsfehler mit Template-Klasse
Code-Snippet:
#include <iostream>
using namespace std;
template <class TYPE1>
struct SDataContainer
{
SDataContainer(TYPE1 pData)
{
m_pData = pData;
}
bool operator==(const SDataContainer<TYPE1>& pData)
{
return (m_pData == pData.m_pData);
}
TYPE1 m_pData;
};
template <class DATATYPE1>
class Comparison
{
public:
Comparison (const SDataContainer<DATATYPE1>& pSData)
{
m_SData = pSData;
}
bool operator==(const Comparison<DATATYPE1>& pData)
{
return (m_SData.m_pData == pData.m_SData.m_pData);
}
SDataContainer<DATATYPE1> m_SData;
};
int main()
{
SDataContainer<float> sDCObj1 (10.0);
SDataContainer<float> sDCObj2 (10.0);
cout << "Verify the data: " << (sDCObj1 == sDCObj2) << endl;
Comparison<float> sCObj1 (sDCObj1);
Comparison<float> sCObj2 (sDCObj2);
cout << "Verify the data: " << (sCObj1 == sCObj2) << endl;
return 0;
}
Compialtion Fehler:
Template.cpp: Im Konstruktor Ein Vergleich :: Vergleich (const SDataContainer &) [mit DATATYPE1 = float] â: Template.cpp: 45: 38: instanziiert von hier Template.cpp: 26: 9: Fehler: keine passende Funktion für den Aufruf von âSDataContainer :: SDataContainer() â template.cpp: 26: 9: Hinweis: Kandidaten sind: template.cpp: 8: 5: Hinweis: SDataContainer :: SDataContainer (TYPE1) [mit TYPE1 = float] Vorlage .cpp: 8: 5: note: Kandidat erwartet 1 Argument, 0 vorausgesetzt template.cpp: 6: 8: note: SDataContainer :: SDataContainer (const SDataContainer &) template.cpp: 6: 8: hinweis: Kandidat erwartet 1 Argument, 0 liefern
ich konnte nicht der Grund für die Erstellung Fehler.
Kann mir jemand in dieser Frage helfen?
Es gibt nur einen Konstruktor für Ihre 'SDataContainer m_SData' Mitglied Feuer,' SDataContainer (TYPE1 pData) ', und es * nicht * default. Die Fehlermeldung scheint auf dem aktuellen Stand zu sein, was das Problem ist. –
WhozCraig