以下是我的示例代码
成员函数foo()
中的需要使用标准c库的exit()
来终止
该过程,但在编译时它与成员函数int CFoo::exit(void)
有明确的命名错误。
无论如何可以避免这个问题吗?
#include <stdlib.h>
#include <stdio.h>
class CFoo
{
public:
void foo(void)
{
exit(0); // needs to use standard libc to exit process
}
void exit(void)
{
printf("exit\n");
}
};
int main()
{
CFoo obj;
obj.foo();
}
答案 0 :(得分:6)
将exit(0)
替换为::exit(0)
。这将强制它使用exit
的全局范围版本。
答案 1 :(得分:0)
将命名与保留函数冲突通常是不好的做法。
我建议将exit
重命名为析构函数。
您可以使用类名作为前缀,以避免编译错误:CFoo::exit(void)
答案 2 :(得分:0)
将stdlib.h
更改为cstdlib
并使用std::exit(0)
来使用标准库功能。
在C ++中使用c库时,使用C ++头文件(以c前缀开头)而不是&#34; .h&#34;不推荐使用。
#include <cstdlib>
#include <cstdio>
class CFoo
{
public:
void foo(void)
{
std::exit(0); // needs to use standard libc to exit process
}
void exit(void)
{
printf("exit\n");
}
};
int main()
{
CFoo obj;
obj.foo();
}