Играя с MSVC++ 2005, я заметил, что если один и тот же класс определен несколько раз, программа все еще счастливо соединяется даже на самом высоком уровне предупреждения. Я нахожу это удивительным, как получается, что это не ошибка?несколько определений одного и того же класса
module_a.cpp:
#include <iostream>
struct Foo {
const char * Bar() { return "MODULE_A"; }
};
void TestA() { std::cout << "TestA: " << Foo().Bar() << std::endl; }
module_b.cpp:
#include <iostream>
struct Foo {
const char * Bar() { return "MODULE_B"; }
};
void TestB() { std::cout << "TestB: " << Foo().Bar() << std::endl; }
main.cpp:
void TestA();
void TestB();
int main() {
TestA();
TestB();
}
И выход:
TestA: MODULE_A
TestB: MODULE_A
Не встраивается. Если бы результаты были правильными. Компилятор, вероятно, отбрасывает один (случайно выбранный) символ. Как указал Нил, если они оба были такими же, что было бы прекрасно. –