C++ 模板类的编译错误

C++ 模板类的编译错误,c++,templates,C++,Templates,我尝试了下面的代码片段,得到了如下所述的编译错误 代码段: #include <iostream> using namespace std; template <class TYPE1> struct SDataContainer { SDataContainer(TYPE1 pData) { m_pData = pData; } bool operator==(const SDataContainer<TYPE

我尝试了下面的代码片段,得到了如下所述的编译错误

代码段:

#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;
}
#包括
使用名称空间std;
模板
结构SDataContainer
{
SDataContainer(类型1 pData)
{
m_pData=pData;
}
布尔运算符==(常量SDataContainer和pData)
{
返回值(m_pData==pData.m_pData);
}
类型1 m_pData;
};
模板
阶级比较
{
公众:
比较(常数SDataContainer和pSData)
{
m_SData=pSData;
}
布尔运算符==(常量比较和pData)
{
返回(m_SData.m_pData==pData.m_SData.m_pData);
}
SDataContainer m_SData;
};
int main()
{
SDataContainer sDCObj1(10.0);
SDataContainer sDCObj2(10.0);
问题是

    Comparison (const SDataContainer<DATATYPE1>& pSData)
      // <<< here
    {
        m_SData = pSData;
    }
比较(常量SDataContainer和pSData)

//要激发的
SDataContainer m_SData
成员只有一个构造函数,
SDataContainer(TYPE1 pData)
,并且它不是默认的构造函数。错误消息似乎与问题的所在相符。
    Comparison (const SDataContainer<DATATYPE1>& pSData)
    : m_SData()
    {
        m_SData = pSData;
    }
    Comparison (const SDataContainer<DATATYPE1>& pSData)
    : m_SData(pSData)
    {
    }