2015-12-02 3 views
1

У меня есть курсовая работа, и я почти закончил все это. Но я застрял в бит, где мне нужно прочитать экземпляр класса в файл, используя оператор потока вывода. оператор выходного потока принимает экземпляр в качестве аргумента, но мне нужно , чтобы использовать его для указателя на экземпляр. любая помощь, пожалуйста?Использование оператора перегрузки выходного потока для указателей

Мой выход реализация оператора поток:

ostream& operator<<(ostream& out, sequence &s) 
{ 
    out<<s.number_of_samples;//<<s.samples; 
    s.samples=new float [s.number_of_samples]; 
    for(int i=0; i<s.number_of_samples; i++) out<<s.samples[i]; 
    return(out); 
} 

бит, где он читает экземпляр на файл:

ofstream output_filtered_samples_file("output.txt"); 
sequence* filtered_sequence = test_FIR.apply_filter(test_sequence); 
output_filtered_samples_file<<filtered_sequence; 

Полный код http://ideone.com/V0Xavo

+0

Другие люди могут комментировать, если вы отметили свой вопрос на этом языке. Я предполагаю C или C++. – GlenPeterson

+0

Я сделал это, спасибо –

+0

«Мне нужно использовать его для указателя» Пожалуйста, объясните, почему вы так думаете. –

ответ

0

разыменования указателя. , ,

output_filtered_samples_file<<*filtered_sequence; 
+0

Если я это сделал, мой код сработает! –

+0

используйте const ref в вашей «перегрузке», а затем какая ошибка? – learnvst

+0

Не дает никаких ошибок, но сбой кода –

0

У вас есть два варианта:

  1. написать operator<<(), которая принимает указатель
  2. Пропустите разыменованное значение.

Второй вариант, вероятно, лучше всего:

output_filtered_samples_file << *filtered_sequence; 

Ваш operator<<() предпочел бы принять ссылку на константные, так как никто не ожидает, что изменения объекта:

ostream& operator<<(ostream& out, const sequence &s) 

Это поможет вы определяете, что не так с телом метода.

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