我有一个非常简单的问题:某处有一个函数
int size (const C & c)
至少可以通过与参数相关的名称查找来找到它。现在的问题:
struct B
{
int size () { /* ... */ }
void doSomething (const C & c)
{
int x = size (c); // <----------- problem!
// ...
}
}
这不起作用,因为名称查找在找到成员函数后停止。
我必须在指示的行中写什么,以便不尝试调用成员函数,而是编译器会在成员函数不存在的情况下执行它会做什么?
请注意,解决方案不是write ::size
,因为这会阻止依赖于参数的名称查找,并且仅在我知道size
声明的位置时才有效。
进一步的并发症:
我知道对于T
我使用以下模板化成员函数的每种相关类型B::doSomething
,某处都会有一个函数
int size (const T & t)
至少可以通过与参数相关的名称查找来找到它。B
如下所示:
struct B
{
int size () { /* ... */ }
template<class T>
void doSomething (const T & t)
{
int x = size (t); // <----------- problem!
// ...
}
}
我希望调用非成员函数(我确信它存在,但我不能确定它在哪里)。