【发布时间】:2009-01-19 19:19:38
【问题描述】:
如果我有一个非模板(即“普通”)类并希望有一个模板友元函数,我如何编写它而不导致编译器错误?这是一个示例来说明我正在尝试做的事情:
template <class T>
void bar(T* ptr);
class MyClass // note that this isn't a template class
{
private:
void foo();
template <class T>
friend void bar(T*); // ERROR: compiler gives me all kinds of grief
};
template <class T>
void bar(T* ptr)
{
if (ptr)
{
MyClass obj;
obj.foo();
}
}
我使用的是 Visual Studio 2005,我得到的具体错误是 error C2063,指出“bar”不是函数。这里需要做些什么不同的事情?
【问题讨论】:
-
你确定吗?我复制了你的示例代码,它在 VS2005 中编译没有错误。
-
它也可以使用 G++ 3.4.5 无错误地编译。您在此处显示的代码很好。也许错误是由其他原因引起的?
-
您的代码绝对正确。错误在其他地方
-
我会相信你的话并继续寻找其他地方。感谢您的所有帮助!
标签: c++ function templates friend