在我的项目中,我声明了一个名为ReplaceFile的函数,但是在cpp中引用它时,却出现了最奇怪的错误。它在我编写的方法的末尾附加了“W”。
到底为什么会认为我写了ReplaceFileW?我已经在项目中搜索了ReplaceFileW,但没有任何结果。
如果您需要其他任何说明,请发表评论,否则,这是否是简单的解决方法?
这是ReplaceFile header 中的声明,并且它是重载的:
// Description: replace an existing file into the package
void ReplaceFile(std::string path, std::string pathInPackage, void(*replaceProgress)(void*, DWORD,
DWORD) = NULL, void *arg = NULL);
// Description: replace an existing file into the package
void ReplaceFile(std::string path, StfsFileEntry *entry, std::string pathInPackage,
void(*replaceProgress)(void*, DWORD, DWORD) = NULL, void *arg = NULL);
谢谢你的时间。
最佳答案
这是因为Windows函数 ReplaceFile
。与几乎所有WINAPI函数一样,它具有两个变体:
ReplaceFileW
ReplaceFileA
使用哪一个取决于
UNICODE
宏。这就是问题所在:符号ReplaceFile
只是一个预处理程序宏,根据ReplaceFileW
宏扩展为ReplaceFileA
或UNICODE
。和所有宏一样,它是无条件扩展的。解决方案:包括Windows系统头文件后,取消定义
ReplaceFile
宏:#include <windows.h>
#undef ReplaceFile
关于c++ - C2039: 'Method' + W不是该类的成员,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/38784294/