我是一个有用的助手,可以为您翻译文本。
我有一个非常简单的问题:在某个地方有一个函数。
这个至少可以通过参数相关的名称查找找到。代码
我有一个非常简单的问题:在某个地方有一个函数。
int size (const C & c)
至少通过参数相关名称查找找到。现在问题来了:
struct B
{
int size () { /* ... */ }
void doSomething (const C & c)
{
int x = size (c); // <----------- problem!
// ...
}
}
这样做是不起作用的,因为在找到成员函数后名称查找就会停止。
我需要在指定的行中编写什么,以便尝试调用的不是成员函数,而是编译器如果成员函数不存在则执行任何操作?
请注意,解决方案不是编写::size
,因为这会阻止参数相关名称查找,并且只有在我知道size
声明在哪里时才起作用。
进一步的复杂性:
我知道对于每个我使用下面模板化的成员函数B::doSomething
的相关类型T
,都将存在一个函数。
int size (const T & t)
这个至少可以通过参数相关的名称查找找到。代码
B
如下所示:struct B
{
int size () { /* ... */ }
template<class T>
void doSomething (const T & t)
{
int x = size (t); // <----------- problem!
// ...
}
}
我希望调用非成员函数(我确定它存在,但不确定它在哪里)。