【发布时间】:2016-05-05 06:33:46
【问题描述】:
我尝试使用以下代码 sn-p 并得到如下所述的编译错误
代码sn-p:
#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;
}
编译错误:
template.cpp:在构造函数中 âComparison::Comparison(const SDataContainer&) [with DATATYPE1 = float]â: template.cpp:45:38: 从这里实例化 template.cpp:26:9: error: no matching function for call to âSDataContainer::SDataContainer()â template.cpp:26:9: 注意:候选人是: template.cpp:8:5: 注意:SDataContainer::SDataContainer(TYPE1) [with TYPE1 = float] template.cpp:8:5: 注意:候选人需要 1 个参数,提供 0 template.cpp:6:8: 注意:SDataContainer::SDataContainer(const SDataContainer&) template.cpp:6:8: 注意:候选人需要 1 个参数,0 提供
我无法得到编译错误的原因。
有人可以帮我解决这个问题吗?
【问题讨论】:
-
只有一个构造函数供
SDataContainer<DATATYPE1> m_SData成员触发,SDataContainer(TYPE1 pData),它不是默认值。错误消息似乎与问题所在有关。