gpt4 book ai didi

c++ - 内联模板函数的编译错误

转载 作者:行者123 更新时间:2023-11-30 03:55:19 25 4
gpt4 key购买 nike

我有一个使用两个参数的简单模板函数:

template<typename To, typename From>To* asSomething( Common *item)
{
From * tdnItem = downcast( item, From );
To * someClass = NULL;

if( tdnItem != NULL )
{
someClass = downcast( tdnItem->gloo(), To );
}

return someClass;
}

稍后,我在另一个内联方法中调用这个辅助方法:

return asSomething<ToFoo, FromFoo>(item);

但是,我在 Visual Studio 中遇到了一个奇怪的编译错误:

error C2065: 'FromTmeta' : undeclared identifier
see reference to function template instantiation 'To *asSomething<ToFoo,FromFoo>(Common * *)' being compiled
with
[
To=ToFoo
]
error C2065: 'ToTmeta' : undeclared identifier

函数声明在我看来是正确的,这里有什么问题?

最佳答案

我怀疑 downcast 是预处理器宏。如果您使用参数将其他内容连接到类型,预处理器宏和模板参数将无法正常工作。

替换

From  * tdnItem = downcast( item, From );

通过

From  * tdnItem = dynamic_cast<From*>(item);

someClass = downcast( tdnItem->gloo(), To );

通过

someClass = dynamic_cast<To*>( tdnItem->gloo());

关于c++ - 内联模板函数的编译错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29133201/

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