2010-06-10 2 views
4

это не работает для меня.
У меня есть файл заголовка и файл cpp.
необходимо определить оператор преобразования из моего класса в INT, но он дает мне «синтаксическую ошибку» при объявлении его в файле H и реализации в файле cpp. возможно, я получил синтаксис неправильно? в файле H я имею в «общественный»:Как объявить преобразование типа в файле заголовка и реализовать в файле cpp?

operator int(); 

и в файле CPP я есть:

A::operator int() { return mNumber ;} 

если я реализовать функцию в файле H он работает, но я не» Я хочу сделать это.
Может ли кто-нибудь помочь?

+0

Я хотел бы сделать метод 'const'. Не думайте, что это влияет на проблему, но семантически я сомневаюсь, что ваше преобразование должно изменить 'A'. –

+4

Не могли бы вы вывести сообщение об ошибке? – avakar

+0

То, что вы разместили, работало для меня с предположением, что 'mNumber' является переменной int. Как говорит @avakar, отправьте сообщение об ошибке. – Troubadour

ответ

1

Я также хотел отделить объявление класса от реализации. Критическое отсутствующий ингредиент был const:

// Foobar.hpp 
class Foobar 
{ 
    public: 
     Foobar() : _v(42) {} 

     operator int() const; 

    private: 

     int _v; 
}; 

А затем в файле реализации:

#include "Foobar.hpp" 

Foobar::operator int() const 
{ 
    return _v; 
} 

Смотреть это reference

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