2013-02-09 3 views
1

у меня есть этот CSVParser класс, я унаследовал его, и мне нужно позвонить оператору << в моем производном классе:Как вызвать << оператор базового класса в производном классе

#include "dbcsv.h" 

DbCsv::DbCsv() : CSVParser() 
{ 
} 


void addColumn(QString &source, const QString &val, const unsigned int s) // 0:duplicate, 1:unique 
{ 
    CSVParser::<< source.toStdString(); 
} 

void removeColumn(QString &source, const QString &val) 
{ 

} 

Я получаю эту ошибку :

dbcsv.cpp: In function 'void addColumn(QString&, const QString&, unsigned int)': 
dbcsv.cpp:10: error: expected unqualified-id before '<<' token 
dbcsv.cpp: At global scope: 

ответ

0
CSVParser::operator<<(source.toStdString()); 

скобки являются обязательными, это вызов функции.

Конечно, если вы не переопределены operator<<, то это проще:

*this << source.toStdString(); // probably what you want 
+0

Я получаю эту ошибку сейчас: 'dbcsv.cpp: In function 'void addColumn (QString &, const QString &, unsigned int)': dbcsv.cpp: 10: ошибка: не может вызвать функцию-член 'const CSVParser & CSVParser :: operator << (const std :: string &) 'без объекта dbcsv.cpp: В глобальном масштабе: ' – SIFE

+2

Функция' addColumn' не является функцией-членом. Вы должны сделать это 'void DbCsv :: addColumn (...) {...', иначе у вас нет (этого) объекта внутри функции, чтобы вызвать оператор. Конечно, вы должны объявить его как функцию-член в определении * class * в dbcsv.h. – JohnB

+0

@JohnB Спасибо за уведомление, я полностью его пропустил. – SIFE

1

предшествуют << с operator и добавить в конец скобки. сделать operator<<(whatever).

Это работает для другого оператора сдвига битов и других перегрузок оператора.

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