* [sisyphus] GCC 3.3 vs GCC 3.4
@ 2005-04-11 8:04 Epiphanov Sergei
2005-04-11 8:53 ` Dmitry Kazimirov
2005-04-11 10:41 ` Dmitry V. Levin
0 siblings, 2 replies; 8+ messages in thread
From: Epiphanov Sergei @ 2005-04-11 8:04 UTC (permalink / raw)
To: Рассылка Sisyphus
[-- Attachment #1: Type: text/plain, Size: 567 bytes --]
Есть программа test.cpp, приложенная в аттаче.
Стоят GCC 3.3 и GCC 3.4. Даю команды:
$ GCC_VERSION=3.3 g++ -o test test.cpp
$ ./test
Res1: 7
Res2: 5
Res3: 0
Res4: 1
$ GCC_VERSION=3.4 g++ -o test test.cpp
test.cpp: In function `int main(int, char**)':
test.cpp:30: error: no matching function for call to `Test::Test(Test)'
test.cpp:7: note: candidates are: Test::Test(Test&)
test.cpp:6: Test::Test(int)
$
Глюк в компиляторе 3.4? Программа - это выжимка работы класса QMap из Qt.
--
С уважением, Епифанов Сергей
[-- Attachment #2: test.cpp --]
[-- Type: text/x-c++src, Size: 533 bytes --]
#include <stdio.h>
class Test{
public:
Test(){ i_num = 0; }
Test(int i){ i_num = i; }
Test(Test &t){ i_num = t.i_num; }
~Test(){}
int num() { return i_num; }
private:
int i_num;
}
Test ff(0);
int ii = 0;
int ins( const int& i, const Test &t) {
ff = t;
return ( ii = i );
}
int main(int argc, char **argv){
Test t(5);
Test t1(7);
printf( "Res1: %d\n", t1.num() );
t1 = t;
printf( "Res2: %d\n", t1.num() );
printf( "Res3: %d\n", ff.num() );
ins( 2, Test(1) );
printf( "Res4: %d\n", ff.num() );
return 0;
}
^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [sisyphus] GCC 3.3 vs GCC 3.4
2005-04-11 8:04 [sisyphus] GCC 3.3 vs GCC 3.4 Epiphanov Sergei
@ 2005-04-11 8:53 ` Dmitry Kazimirov
2005-04-11 10:41 ` Dmitry V. Levin
1 sibling, 0 replies; 8+ messages in thread
From: Dmitry Kazimirov @ 2005-04-11 8:53 UTC (permalink / raw)
To: ALT Linux Sisyphus discussion list
> Есть программа test.cpp, приложенная в аттаче.
Если принять во внимание, что в 12-й строке пропущена
запятая, завершающая определение класса, пример
должен компилироваться любым компилятором.
К сожалению, у меня сейчас нет возможности проверить.
Но скорее всего, причина в этом, что означает, что компилятор
g++ имеет устойчивую тенденцию к ухудшению качества
сообщений об ошибках.
^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [sisyphus] GCC 3.3 vs GCC 3.4
2005-04-11 8:04 [sisyphus] GCC 3.3 vs GCC 3.4 Epiphanov Sergei
2005-04-11 8:53 ` Dmitry Kazimirov
@ 2005-04-11 10:41 ` Dmitry V. Levin
2005-04-11 11:46 ` Epiphanov Sergei
1 sibling, 1 reply; 8+ messages in thread
From: Dmitry V. Levin @ 2005-04-11 10:41 UTC (permalink / raw)
To: ALT Linux Sisyphus mailing list
[-- Attachment #1: Type: text/plain, Size: 1856 bytes --]
Hi,
On Mon, Apr 11, 2005 at 12:04:13PM +0400, Epiphanov Sergei wrote:
> Есть программа test.cpp, приложенная в аттаче.
>
> Стоят GCC 3.3 и GCC 3.4. Даю команды:
>
> $ GCC_VERSION=3.3 g++ -o test test.cpp
> $ ./test
> Res1: 7
> Res2: 5
> Res3: 0
> Res4: 1
> $ GCC_VERSION=3.4 g++ -o test test.cpp
> test.cpp: In function `int main(int, char**)':
> test.cpp:30: error: no matching function for call to `Test::Test(Test)'
> test.cpp:7: note: candidates are: Test::Test(Test&)
> test.cpp:6: Test::Test(int)
> $
>
> Глюк в компиляторе 3.4? Программа - это выжимка работы класса QMap из Qt.
$ g++ --version |fgrep g++
i586-alt-linux-g++ (GCC) 3.4.3 20050314 (ALT Linux, build 3.4.3-alt6)
$ g++ -c test.cpp
test.cpp:14: error: `Test' does not name a type
test.cpp: In function `int ins(const int&, const Test&)':
test.cpp:18: error: `ff' undeclared (first use this function)
test.cpp:18: error: (Each undeclared identifier is reported only once for each function it appears in.)
test.cpp: In function `int main(int, char**)':
test.cpp:28: error: `ff' undeclared (first use this function)
test.cpp:29: error: no matching function for call to `Test::Test(Test)'
test.cpp:7: note: candidates are: Test::Test(Test&)
test.cpp:6: note: Test::Test(int)
1. Определение класса должно завершаться символом ";".
2. Согласно /usr/share/doc/gcc-3.4/NEWS.html,
"G++ is now much closer to full conformance to the ISO/ANSI C++ standard.
This means, among other things, that a lot of invalid constructs which
used to be accepted in previous versions will now be rejected. It is
very likely that existing C++ code will need to be fixed."
В данном случае речь идёт о том, что конструктор "Test::Test(Test &t)"
следует заменить конструктором "Test::Test(const Test &t)".
--
ldv
[-- Attachment #2: Type: application/pgp-signature, Size: 189 bytes --]
^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [sisyphus] GCC 3.3 vs GCC 3.4
2005-04-11 10:41 ` Dmitry V. Levin
@ 2005-04-11 11:46 ` Epiphanov Sergei
2005-04-11 12:12 ` Andrey Rahmatullin
0 siblings, 1 reply; 8+ messages in thread
From: Epiphanov Sergei @ 2005-04-11 11:46 UTC (permalink / raw)
To: ALT Linux Sisyphus mailing list
В сообщении от 11 Апрель 2005 14:41 Dmitry V. Levin написал:
> В данном случае речь идёт о том, что конструктор "Test::Test(Test &t)"
> следует заменить конструктором "Test::Test(const Test &t)".
То есть надо править Qt или ждать когда разработчики исправят это сами? Я
имею в виду файл qmap.h, определение оператора [] для класса QMap.
--
С уважением, Епифанов Сергей
^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [sisyphus] GCC 3.3 vs GCC 3.4
2005-04-11 11:46 ` Epiphanov Sergei
@ 2005-04-11 12:12 ` Andrey Rahmatullin
2005-04-11 12:24 ` Epiphanov Sergei
0 siblings, 1 reply; 8+ messages in thread
From: Andrey Rahmatullin @ 2005-04-11 12:12 UTC (permalink / raw)
To: sisyphus
[-- Attachment #1: Type: text/plain, Size: 642 bytes --]
On Mon, Apr 11, 2005 at 03:46:53PM +0400, Epiphanov Sergei wrote:
> То есть надо править Qt или ждать когда разработчики исправят это сами? Я
У вас не работает прога, включающая qmap.h? Покажите ее.
> имею в виду файл qmap.h, определение оператора [] для класса QMap.
T& operator[] ( const Key& k );
Это что ли? А что здесь неправильно?
--
WBR, wRAR (ALT Linux Team)
Powered by the ALT Linux fortune(8):
Судя по развернувшейся бурной переписке между интересующимися и вашим
покорным слугой, не помешает, однако, вначале изложить некоторую теорию,
чтобы предварить ваши вопросы моими ответами.
-- morozov in sisyphus@
[-- Attachment #2: Type: application/pgp-signature, Size: 189 bytes --]
^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [sisyphus] GCC 3.3 vs GCC 3.4
2005-04-11 12:12 ` Andrey Rahmatullin
@ 2005-04-11 12:24 ` Epiphanov Sergei
2005-04-11 12:40 ` Andrey Rahmatullin
0 siblings, 1 reply; 8+ messages in thread
From: Epiphanov Sergei @ 2005-04-11 12:24 UTC (permalink / raw)
To: Andrey Rahmatullin, sisyphus
В сообщении от 11 Апрель 2005 16:12 Andrey Rahmatullin написал:
> On Mon, Apr 11, 2005 at 03:46:53PM +0400, Epiphanov Sergei wrote:
> > То есть надо править Qt или ждать когда разработчики исправят это
> > сами? Я
>
> У вас не работает прога, включающая qmap.h? Покажите ее.
>
> > имею в виду файл qmap.h, определение оператора [] для класса QMap.
>
> T& operator[] ( const Key& k );
> Это что ли? А что здесь неправильно?
template<class Key, class T>
Q_INLINE_TEMPLATES T& QMap<Key,T>::operator[] ( const Key& k )
{
detach();
QMapNode<Key,T>* p = sh->find( k ).node;
if ( p != sh->end().node )
return p->data;
return insert( k, T() ).data();
}
Проблема в строке
return insert( k, T() ).data();
А программа проста:
QMap<int,QString> map;
QString s("Str");
map[0]=s;
--
С уважением, Епифанов Сергей
^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [sisyphus] GCC 3.3 vs GCC 3.4
2005-04-11 12:24 ` Epiphanov Sergei
@ 2005-04-11 12:40 ` Andrey Rahmatullin
2005-04-11 13:31 ` Epiphanov Sergei
0 siblings, 1 reply; 8+ messages in thread
From: Andrey Rahmatullin @ 2005-04-11 12:40 UTC (permalink / raw)
To: sisyphus
[-- Attachment #1: Type: text/plain, Size: 653 bytes --]
On Mon, Apr 11, 2005 at 04:24:48PM +0400, Epiphanov Sergei wrote:
> QMap<int,QString> map;
> QString s("Str");
> map[0]=s;
wrar@wrars-comp ~ $ <test.cpp
#include <qmap.h>
int main()
{
QMap<int,QString> map;
QString s("Str");
map[0]=s;
return 0;
}
wrar@wrars-comp ~ $ g++ test.cpp -I/usr/lib/qt3/include -L/usr/lib/qt3/lib -lqt-mt
wrar@wrars-comp ~ $ ./a.out
wrar@wrars-comp ~ $ rpm -q libqt3 gcc3.4
libqt3-3.3.4-alt3
gcc3.4-3.4.3-alt6
--
WBR, wRAR (ALT Linux Team)
Powered by the ALT Linux fortune(8):
Ну дык думать надо сообща. Одна голова хорошо, а две лучше, хоть и не очень
удобно ;)
-- dketov in devel@
[-- Attachment #2: Type: application/pgp-signature, Size: 189 bytes --]
^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [sisyphus] GCC 3.3 vs GCC 3.4
2005-04-11 12:40 ` Andrey Rahmatullin
@ 2005-04-11 13:31 ` Epiphanov Sergei
0 siblings, 0 replies; 8+ messages in thread
From: Epiphanov Sergei @ 2005-04-11 13:31 UTC (permalink / raw)
To: Andrey Rahmatullin, sisyphus
Всё, прошу прощения, торможу. Бью себя правой пяткой по левому уху.
Использовал свой класс, а в нём конструктор копирования записан как
Test(Test &t);
а не как
Test(const Test &t);
Переписал как положено и заработало. Спасибо всем!
--
С уважением, Епифанов Сергей
^ permalink raw reply [flat|nested] 8+ messages in thread
end of thread, other threads:[~2005-04-11 13:31 UTC | newest]
Thread overview: 8+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2005-04-11 8:04 [sisyphus] GCC 3.3 vs GCC 3.4 Epiphanov Sergei
2005-04-11 8:53 ` Dmitry Kazimirov
2005-04-11 10:41 ` Dmitry V. Levin
2005-04-11 11:46 ` Epiphanov Sergei
2005-04-11 12:12 ` Andrey Rahmatullin
2005-04-11 12:24 ` Epiphanov Sergei
2005-04-11 12:40 ` Andrey Rahmatullin
2005-04-11 13:31 ` Epiphanov Sergei
ALT Linux Sisyphus discussions
This inbox may be cloned and mirrored by anyone:
git clone --mirror http://lore.altlinux.org/sisyphus/0 sisyphus/git/0.git
# If you have public-inbox 1.1+ installed, you may
# initialize and index your mirror using the following commands:
public-inbox-init -V2 sisyphus sisyphus/ http://lore.altlinux.org/sisyphus \
sisyphus@altlinux.ru sisyphus@altlinux.org sisyphus@lists.altlinux.org sisyphus@lists.altlinux.ru sisyphus@lists.altlinux.com sisyphus@linuxteam.iplabs.ru sisyphus@list.linux-os.ru
public-inbox-index sisyphus
Example config snippet for mirrors.
Newsgroup available over NNTP:
nntp://lore.altlinux.org/org.altlinux.lists.sisyphus
AGPL code for this site: git clone https://public-inbox.org/public-inbox.git