2014-06-02 4 views
0

Я пытаюсь подключить приложение Windows C++ для Linux. И у меня есть промемы. Я не знаю, как правильно это объяснить, но я попробую.шаблоны C++ с GCC

У меня есть следующий код: В заголовочном файле:

template<typename bidtype,typename chartype> 
class pst_appointment_impl : 
    virtual public pst_appointment, 
    public pst_message_impl<bidtype,chartype> 
{ 
... 
} 

В CPP файле (и есть мои проблемы):

... 
template pst_appointment_impl<DWORD, char>; 
template pst_appointment_impl<DWORDLONG,wchar_t>; 

Я не знаю, как она называет точно, но VS2010 скомпилировать его хорошо. НО, в Linux, GCC дает ошибки «Синтаксическая ошибка» на последних двух строках.

Любые идеи, как исправить это?

================================================================================================================================== ========

[EDITION]

Все окна типы определены. Я использую Eclipse на linux. Это дает ошибку «не может разрешить имя», когда Есть проблемы с типами, но в настоящее время: «Синтаксическая ошибка»

+0

Сначала убедитесь, что 'DWORD' и 'DWORDLONG' определены (они не были бы по умолчанию, вы должны были бы предоставить эти определения где-нибудь.) – juanchopanza

+0

Вам нужно будет определить DWORD и DWORDLONG, чтобы вы могли делать' typedef unsigned int DWORD; 'и т. д. – EdChum

+0

DWORD, DWORDLONG и другие ... – IStar

ответ

3

Вы должны объявить DWORD и DWORDLONG правильно и использовать

template class pst_appointment_impl<DWORD, char>; 
template class pst_appointment_impl<DWORDLONG, wchar_t>; 
+0

Обратите внимание, что 'struct' тоже будет работать. – juanchopanza

+0

MSVC (может) выдает предупреждение, когда вы смешиваете 'struct' /' class' между декларациями/определениями. – Jarod42

+0

Но это было бы нестандартным. – juanchopanza

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