2013-05-27 3 views
0

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 

Compiler ошибки (перевод):

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. 
+1

ли линия 10 внутри тела функции? Если нет, то это недопустимый код. –

+0

@OliCharlesworth Нет, это не так. Я буду искать функцию для правильной установки этой команды. – Lara

+0

Это исправляет, спасибо! – Lara

ответ

0

@OliCharlesworth понял это , Вот как это должно выглядеть

mod_converter.h:

std::string mod_fooToString(Foo f); 

void setPointers() { // this was missing... 
    fooToString = &mod_fooToString; 
} 
Смежные вопросы