2014-10-08 2 views
2

У меня есть некоторая чисто виртуальная функция в классе, который определен в заголовочном файле, например:Чистая виртуальная функция с реализацией терпит неудачу в XCode

virtual string GetStdString() = 0 
{ 
    // some code 
} 

На окнах он работает отлично, но компиляция с XCode У меня есть a)

«Ожидаемый»; в конце списка декларации "

, который указывает на конец строки с именем функции.

ответ

2

Какой бы компилятор вы не использовали в Windows, это неправильно. Этот код не должен компилироваться. You может предоставить тело для чистой виртуальной функции, но вы не можете сделать это в той же декларации (в значительной степени только потому, что стандарт говорит так). Измените свой код следующим образом:

class TheClass 
{ 
    virtual string GetStdString() = 0; 
}; 

inline string TheClass::GetStdString() 
{ 
    // some code 
} 
+0

Большое спасибо. Используя ваш намек, я сформулировал правильный запрос и нашел пару ссылок. Например, http://www.programmerinterview.com/index.php/c-cplusplus/pure-virtual-function/ – nikitablack

+0

Стандарт кажется здесь произвольным, но мне нравится ваше объяснение «... потому что стандарт говорит так» , :-) – TobiMcNamobi

Смежные вопросы