gpt4 book ai didi

c++ - 在模板中调用对象的方法

转载 作者:太空宇宙 更新时间:2023-11-04 16:18:38 25 4
gpt4 key购买 nike

我有以下代码:

template<class T>
class TemplateA : public virtual std::list<T>
{
protected:
unsigned int iSize;
public:
unsigned int getSize();
};
/////////////
template<class T>
unsigned int TemplateA<T>::getSize()
{
return iSize;
}
/////////////
/////////////
/////////////
template<class T>
class TemplateB : public TemplateA<T>
{
public:
unsigned int calcSize();
};
/////////////
template<class C>
unsigned int TemplateB<C>::calcSize()
{
iSize = C.getSize;
return iSize;
}
/////////////
/////////////
/////////////
// Class C (seperate file) has to contain function getSize()
class CMyClass
{
public:
static const unsigned int getSize = 5;
};

这意味着,在类 TemplateB 中,我想调用传递类定义的 getSize 方法。

我收到以下错误消息:

error C2275: 'C' : illegal use of this type as an expression
while compiling class template member function 'unsigned int TemplateB<C>::calcSize()'
1> with
1> [
1> C=CMyClass
1> ]

我很确定这个函数在 VS 2003 下工作......这个方法有什么问题?也许是编译器设置?我不知道在哪里设置什么:(

最佳答案

您应该说this->getSizeC::getSize;当模板参数已知时,这会将查找推迟到第二阶段。

关于c++ - 在模板中调用对象的方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19764430/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com