标准 POSIX 读取受到具有不同签名的读取方法的影响

gru*_*czy 3 c++ unistd.h shadows

我有一个带有读取功能的 C++ File 类,它应该将文件的全部内容(就像 Python 一样)读入缓冲区。但是,当我尝试从 unistd.h 调用读取函数时,我得到:

\n
\n

file.cpp:21: 错误: 没有匹配的函数用于调用 \xe2\x80\x98File::read(int&, char*&, int)\xe2\x80\x99

\n

file.cpp:17: 注意:候选者是: char* File::read()

\n
\n

我究竟做错了什么?它们具有完全不同的签名,为什么我不能简单地调用它?

\n

Kim*_*man 6

您是否尝试过明确说明范围?

char* File::read()
{
   // Double-colon to get to global scope
   ::read(...);
   // ..
}
Run Code Online (Sandbox Code Playgroud)