gpt4 book ai didi

c++ - C++ 中奇怪的自动引用

转载 作者:行者123 更新时间:2023-11-28 07:18:33 26 4
gpt4 key购买 nike

我正在编写 C 工具来调用 C++ API。我有以下代码:

Boxa *tess_get_text_lines(tess_api_t *api, const bool raw_image, 
const int raw_padding, Pixa** pixa, int **blockids,
int **paraids)
{
return api->tess_api->GetTextlines(raw_image, raw_padding, pixa, blockids,
paraids);
}

我收到以下 G++ 错误:

$ ./build_so.sh 
tesseract.cpp: In function ‘Boxa* tess_get_text_lines(tess_api_t*, bool, int, Pixa**, int**, int**)’:
tesseract.cpp:172:47: error: no matching function for call to ‘tesseract::TessBaseAPI::GetTextlines(const bool&, const int&, Pixa**&, int**&, int**&)’
tesseract.cpp:172:47: note: candidate is:
In file included from tesseract.cpp:3:0:
/usr/include/tesseract/baseapi.h:376:9: note: Boxa* tesseract::TessBaseAPI::GetTextlines(Pixa**, int**)
/usr/include/tesseract/baseapi.h:376:9: note: candidate expects 2 arguments, 5 provided

它与我对正确过载的调用不匹配。作为引用,以下是被调用方法的可用重载:

Boxa* GetTextlines(const bool raw_image, const int raw_padding,
Pixa** pixa, int** blockids, int** paraids);
Boxa* GetTextlines(Pixa** pixa, int** blockids);

为什么我的调用被翻译成“GetTextlines(const bool&, const int&, Pixa*&, int*&, int**&)”(所有的 by-ref'ing )?

谢谢。

最佳答案

编译器不会自动引入引用。相反,它注意到您提供的参数是左值,并试图找到一个在提供引用类型时可以工作的重载。 (请注意,提供的类型是有关您传递给函数的类型的信息,而不是函数签名中实际的类型。)

也就是说,错误确实为您提供了解决问题所需的信息。请注意,它所说的第一个类型是 const bool,但您尝试调用的函数采用 tess_api_t*。我认为您可能需要更改调用函数的方式。

希望对您有所帮助!

关于c++ - C++ 中奇怪的自动引用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19871894/

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