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)
{
}