Здравствуйте, мыщъх, Вы писали:
М>Здравствуйте, dipso, Вы писали:
D>>Только что собрал.Пишет "в третьем". М>пишет 5 ошибок М>первая попытка ругалась на 4 ошибки
М>прогресс!
Если Вы на линухе — сейчас откапаю msys и проверю gcc.
Но лень(смотри ник).
А лень по коду глазами пробежаться. Чтобы ткнуть носом. Мой код — это ж документ.
Здравствуйте, dipso, Вы писали:
D>Если Вы на линухе — сейчас откапаю msys и проверю gcc.
на маке. clang (C++14 feature complete)
D>Но лень(смотри ник).
зачем тогда писать системно-зависимый код, который не работает на других системах и который непонятно что демонстрирует и зачем.
D>А лень по коду глазами пробежаться. Чтобы ткнуть носом. Мой код — это ж документ.
вот что говорит компилятор:
vc1.cpp:21:18: error: non-const lvalue reference to type 'VCons' cannot bind to a temporary of type 'VCons'
First(VCons& vc=VCons())
^ ~~~~~~~
vc1.cpp:21:18: note: passing argument to parameter 'vc' here
vc1.cpp:39:19: error: non-const lvalue reference to type 'VCons' cannot bind to a temporary of type 'VCons'
Second(VCons& vc=VCons()) : First(vc)
^ ~~~~~~~
vc1.cpp:39:19: note: passing argument to parameter 'vc' here
vc1.cpp:50:18: error: non-const lvalue reference to type 'VCons' cannot bind to a temporary of type 'VCons'
Third(VCons& vc=VCons()) : Second(vc)
^ ~~~~~~~
vc1.cpp:50:18: note: passing argument to parameter 'vc' here
vc1.cpp:67:11: error: no matching constructor for initialization of 'Third'
Third s;
^
vc1.cpp:50:5: note: candidate constructor not viable: requires single argument 'vc', but no arguments were provided
Third(VCons& vc=VCons()) : Second(vc)
^
vc1.cpp:48:8: note: candidate constructor (the implicit copy constructor) not viable: requires 1 argument, but 0 were provided
struct Third : public Second
^
americans fought a war for a freedom. another one to end slavery. so, what do some of them choose to do with their freedom? become slaves.
Здравствуйте, dipso, Вы писали:
D>Только что собрал.Пишет "в третьем".
Ну во первых это не по стандарту:
Third(VCons& vc=VCons()) : Second(vc)
надо так:
Third(const VCons& vc=VCons()) : Second(vc)
Иначе твой vc умрет когда захочет компилятор.
Тебе повезло что VCons::~VCons() вызвался после того как Third полностью сконструировался и соответственно vc разрушился позже s.
Соответственно т.к. Print виртуальная, то вызвалась перегруженная функция.
[In theory there is no difference between theory and practice. In
practice there is.]
[Даю очевидные ответы на риторические вопросы]
Игрался с Visual Studio Express 2008, получилось.
Но gcc 4.7.0 сказал
man@mans /d/1
$ gcc vctest.cpp
vctest.cpp:23:24: error: default argument for parameter of type 'VCons&' has type 'VCons'
vctest.cpp:41:25: error: default argument for parameter of type 'VCons&' has type 'VCons'
vctest.cpp:52:24: error: default argument for parameter of type 'VCons&' has type 'VCons'
vctest.cpp: In function 'int main(int, _TCHAR**)':
vctest.cpp:69:8: error: call to 'Third::Third(VCons&)' uses the default argument for parameter 1, whi
ch is not yet defined
man@mans /d/1
$ gcc -v
Using built-in specs.
COLLECT_GCC=d:\MSYS\mingw\bin\gcc.exe
COLLECT_LTO_WRAPPER=d:/msys/mingw/bin/../libexec/gcc/mingw32/4.7.0/lto-wrapper.exe
Target: mingw32
Configured with: ../gcc-4.7.0/configure --enable-languages=c,c++,ada,fortran,objc,obj-c++ --disable-s
jlj-exceptions --with-dwarf2 --enable-shared --enable-libgomp --disable-win32-registry --enable-libst
dcxx-debug --disable-build-poststage1-with-cxx --enable-version-specific-runtime-libs --build=mingw32
--prefix=/mingw
Thread model: win32
gcc version 4.7.0 (GCC)
Здравствуйте, Vain, Вы писали:
V>Здравствуйте, dipso, Вы писали:
D>>Только что собрал.Пишет "в третьем". V>Ну во первых это не по стандарту: V>
V>Third(VCons& vc=VCons()) : Second(vc)
V>
V>надо так: V>
V>Third(const VCons& vc=VCons()) : Second(vc)
V>
V>Иначе твой vc умрет когда захочет компилятор. V>Тебе повезло что VCons::~VCons() вызвался после того как Third полностью сконструировался и соответственно vc разрушился позже s. V>Соответственно т.к. Print виртуальная, то вызвалась перегруженная функция.
Насколько я понимаю этот язык, мой vc должен умереть в конце охватывающего конструктора.
Ошибка моя вероятно в стандарте, да.
Просто амперсанд был в этой теме коньком.
А зачем здесь конст?
Здравствуйте, dipso, Вы писали:
D>Здравствуйте, мыщъх, Вы писали: D>...
D>Игрался с Visual Studio Express 2008, получилось. D>Но gcc 4.7.0 сказал
как вообще можно жить не имея нескольких компиляторов под различные платформы -- я не представляю.
americans fought a war for a freedom. another one to end slavery. so, what do some of them choose to do with their freedom? become slaves.
Здравствуйте, мыщъх, Вы писали:
М>Здравствуйте, dipso, Вы писали:
D>>Здравствуйте, мыщъх, Вы писали: D>>...
D>>Игрался с Visual Studio Express 2008, получилось. D>>Но gcc 4.7.0 сказал М>как вообще можно жить не имея нескольких компиляторов под различные платформы -- я не представляю.
Ну как. Так.
Может Вы имели ввиду то что не проверил на втором. Какая херня.
Я в основном читаю этот форум как любитель, уже 10 лет, и знаю что Вы здесь Человек который может сказать Слово.
А я — проходящий мимо.
Спасибо что ткнули носом.
Вот ещё бы в стандарт, то да...
Здравствуйте, dipso, Вы писали:
V>>Иначе твой vc умрет когда захочет компилятор. V>>Тебе повезло что VCons::~VCons() вызвался после того как Third полностью сконструировался и соответственно vc разрушился позже s. V>>Соответственно т.к. Print виртуальная, то вызвалась перегруженная функция. D>Насколько я понимаю этот язык, мой vc должен умереть в конце охватывающего конструктора.
это ill formed код, он вообще по стандарту не должен компилироваться и, соответственно, vc умрёт тогда когда пожелает левая нога компилятора
D>Ошибка моя вероятно в стандарте, да.
студия не следует стандарту достаточно давно, так что это и не удивительно
D>А зачем здесь конст?
читай про rvalue
[In theory there is no difference between theory and practice. In
practice there is.]
[Даю очевидные ответы на риторические вопросы]
D>>>Игрался с Visual Studio Express 2008, получилось. D>>>Но gcc 4.7.0 сказал М>>как вообще можно жить не имея нескольких компиляторов под различные платформы -- я не представляю. D>Ну как. Так. D>Может Вы имели ввиду то что не проверил на втором. Какая херня. D>Я в основном читаю этот форум как любитель, уже 10 лет, и знаю что Вы здесь Человек который может сказать Слово. D>А я — проходящий мимо. D>Спасибо что ткнули носом. D>Вот ещё бы в стандарт, то да...
Доктор?
Выпустили? Когда уже туалеты мыть предложите?
Или сразу в архитекторы/пастыри?