| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > C/C++: Программирование под Unix/Linux > Двумерный массив как параметр функции |
| Автор: ramb 30.11.2006, 18:47 |
| Возникает ошибка при компиляции. Не пойму что указываю не так (qt 3.3.5, FreeBSD 6.1, kde) Выдержки из исходников: ksyncsystemtray.h: #include ... .... class KSyncSystemTray : public KSystemTray { Q_OBJECT public: .... char string2[11][100]; public slots: void Clicked(); signals: void signal_sig(char [][100] , char [][100], char [][100] ); }; ksyncsystemtray.cpp: #include ... ... KSyncSystemTray::KSyncSystemTray(QWidget* parent, const char* name) : KSystemTray() { .... connect( this, SIGNAL( signal_sig(char [][100] ,char [][100],char [][100]) ), wid, SLOT( slotCreateSig(char [][100],char [][100],char [][100]) ) ); } void KSyncSystemTray::Clicked(void) { .... emit signal_sig(string2,string2,string2); } #include "ksyncsystemtray.moc" Далее: moc ksyncsystemtray.h -o ksyncsystemtray.moc Затем компиляция (все компилируется кроме ksyncsystemtray): qmake -spec /usr/local/share/qt/mkspecs/freebsd-g++ -o Makefile sigcreate.pro make Ошибки: n file included from ksyncsystemtray.cpp:587: ksyncsystemtray.moc:92: error: expected `,' or `...' before "t0" ksyncsystemtray.moc:93: error: prototype for `void KSyncSystemTray::signal_sig(char (*)[100])' does not match any in class `KSyncSystemTray' ksyncsystemtray.h:141: error: candidate is: void KSyncSystemTray::signal_sig(char (*)[100], char (*)[100], char (*)[100]) ksyncsystemtray.moc: In member function `void KSyncSystemTray::signal_sig(char (*)[100])': ksyncsystemtray.moc:100: error: `t0' undeclared (first use this function) ksyncsystemtray.moc:100: error: (Each undeclared identifier is reported only once for each function it appears in.) ksyncsystemtray.moc:101: error: `t1' undeclared (first use this function) ksyncsystemtray.moc:102: error: `t2' undeclared (first use this function) ksyncsystemtray.moc: In member function `virtual bool KSyncSystemTray::qt_emit(int, QUObject*)': ksyncsystemtray.moc:119: error: expected primary-expression before "char" ksyncsystemtray.moc:119: error: expected `)' before "char" Кусок из moc-файла: // SIGNAL signal_sig строчка 92 void KSyncSystemTray::signal_sig( char[][100] t0, char[][100] t1, char[][100] t2 ) { if ( signalsBlocked() ) return; QConnectionList *clist = receivers( staticMetaObject()->signalOffset() + 0 ); if ( !clist ) return; QUObject o[4]; static_QUType_ptr.set(o+1,&t0); static_QUType_ptr.set(o+2,&t1); static_QUType_ptr.set(o+3,&t2); activate_signal( clist, o ); } Наставте, плиз, на путь истинный. Совсем запутался. |
| Автор: bsa 1.12.2006, 18:35 |
| замени: void KSyncSystemTray::signal_sig( char[][100] t0, char[][100] t1, char[][100] t2 ) на: void KSyncSystemTray::signal_sig( char t0[][100], char t1[][100], char t2[][100]) |
| Автор: ramb 2.12.2006, 13:53 |
| Заменил в moc-файле, как посоветовали, ошибки с декларированием t0-t2 исчезли, но остались ошибки строчки 119: In file included from ksyncsystemtray.cpp:600: ksyncsystemtray.moc: In member function `virtual bool KSyncSystemTray::qt_emit(int, QUObject*)': ksyncsystemtray.moc:119: error: expected primary-expression before "char" ksyncsystemtray.moc:119: error: expected `)' before "char" ksyncsystemtray.moc: bool KSyncSystemTray::qt_emit( int _id, QUObject* _o ) { switch ( _id - staticMetaObject()->signalOffset() ) { строчка 119 case 0: signal_sig((char[][100])*((char[]**)static_QUType_ptr.get(_o+1)),(char[][100])*((char[]**)static_QUType_ptr.get(_o+2)), (char[][100])*((char[]**)static_QUType_ptr.get(_o+3))); break; default: return KSystemTray::qt_emit(_id,_o); } return TRUE; } |