【发布时间】:2012-11-24 02:09:25
【问题描述】:
我对 C++ 类定义感到困惑。有人可以帮帮我吗?
我有这样定义的原始模板类:
template <typename T>
struct SYNCHED_DATA{
SYNCHED_DATA(int r)
{
var_R = r;
}
void set(T* pV)
{
var_T = *pV;
}
//...
private:
//Copy constructor and assignments are NOT available!
SYNCHED_DATA(const SYNCHED_DATA& s)
{
}
SYNCHED_DATA& operator = (const SYNCHED_DATA& s)
{
}
T var_T;
int var_R;
};
然后我从另一个类中使用它:
struct THREADS_REPORT{
THREADS_REPORT() //error C2512: 'SYNCHED_DATA<T>' : no appropriate default constructor available
{
}
void getReport(THREADS_REPORT_DATA* pOutReport)
{
//Retrieve report array
sthrd.get(pOutReport);
}
void setReport(THREADS_REPORT_DATA* pReport)
{
//Set report array
sthrd.set(pReport);
}
private:
SYNCHED_DATA<THREADS_REPORT_DATA> sthrd;
//Copy constructor and assignments are NOT available!
THREADS_REPORT(const THREADS_REPORT& s) //error C2512: 'SYNCHED_DATA<T>' : no appropriate default constructor available
{
}
THREADS_REPORT& operator = (const THREADS_REPORT& s)
{
}
};
但我在第二类中至少有两个位置出现“错误 C2512”错误(在上面的代码中标记。)我需要如何更改第二类才能使其编译?
【问题讨论】:
-
这就是它所说的意思。你已经告诉它调用
SYNCHED_DATA<THREADS_REPORT_DATA>的默认构造函数,但它没有。
标签: c++ class templates struct