Здравствуйте, LaptevVV, Вы писали:
LVV>Здравствуйте, Were, Вы писали:
W>>Причем тут вообще линкер? В первом случае у тебя TArray.h только один раз включается в каждый .cpp файл, а во втором случае он включается два раза в TFlex.cpp и в main.cpp: первый раз сам по себе, второй через TFlex.h. Вот компилятор и начинает ругаться, что у тебя по 2 раза все определено. W>>А TFlex.h без прагмы работает, так как он включается только по одному разу в TFlex.cpp и в main.cpp. LVV>Дык при трансляции, естественно, никаких сообщений не должно выдаваться. Оно и не выдается. LVV>А линкер вот причем. Определение класса Array попадает и в файл с определением методов TArray.cpp, и в файл с функцией main. То есть при сборке — две штуки должно обнаруживаться.
Так у тебя в TArray.h определение или объявление класса? Если только объявление, то линкер все-таки не причем, а если определение, то и в первом случае он будет ругаться. Может приведешь минимальный пример, демонстрирующий, что именно, по-твоему, разруливает ликер?
LVV>Обычно на повторное определение линкер выдает сообщение. А здесь — не выдает. W>>И не надейся, начинай каждый хидер с #pragma once ) LVV>Предпочитаю стража.
The last good thing written in C was Franz Schubert's Symphony No. 9.