要解决这个问题,你可以使用 ADL(Argument-Dependent Lookup)的方法,将它包装在一个结构体或命名空间中,以便在室外也能正常工作。下面是一个示例代码:
#include
namespace ADL {
struct MyClass {
int value;
};
void print(const MyClass& obj) {
std::cout << "ADL: " << obj.value << std::endl;
}
}
int main() {
ADL::MyClass obj { 10 };
ADL::print(obj);
return 0;
}
在这个示例中,MyClass
结构体被定义在ADL
命名空间中。print
函数也被定义在同一个命名空间中。因此,在main
函数中,我们可以通过ADL::print
来调用print
函数,并传递MyClass
对象作为参数。
输出结果将是 ADL: 10
,证明了在室外(即使在结构之外)也能正常工作。