converter.h位于一个用于许多不同项目的库中。在一个包含mod_converter.h的内容中,我想修改fooToString()。但编译后一个项目给了我一个错误。我正在使用Visual Studio 2008。
converter.h
std::string impl_fooToString(Foo f);
static std::string (*fooToString)(Foo f) = &impl_fooToString; // line 29
mod_converter.h
std::string mod_fooToString(Foo f);
fooToString = &mod_fooToString; // line 10
编译器错误(已翻译):
mod_converter.h(10) : error C4430: Missing type specifier: int assumed
mod_converter.h(10) : error C2373: 'fooToString': redefinition; different type modifier
converter.h(29) : see declaration of fooToString
mod_converter.h(10) : error C2440: Cannot convert from 'std::string (__cdecl *)(Foo)' to int
There is no context in which this conversion is possible.
答案 0 :(得分:0)
mod_converter.h:
std::string mod_fooToString(Foo f);
void setPointers() { // this was missing...
fooToString = &mod_fooToString;
}