непонятное поведение
От: dcb-BanDos Россия  
Дата: 28.09.09 12:54
Оценка:
Наткнулся на сабж, VS2005
Минимальный пример таков:

Test1.cpp

#include "Test1.h"
#include <string>
class something
{
public:
    int a;
    std::string sz1;
    int b;
    std::string sz2;
};

void CTest1::test()
{
    something smth;
    smth.b = 0x7fffffff;
    smth.sz2 = "qwefqwefqwefqwef";
}



Test3.cpp
#include "StdAfx.h"
#include <string>

#include "Test3.h"

class something
{
public:
    std::string sz1;
    std::string sz2;
    int a;
};

void CTest3::test()
{
    something smth;
    smth.a = 0x7fffffff;
    smth.sz1 = "asdfasdfasdfsadf";
    smth.sz2 = "rtyjrtyjrtyjrtyjrtyj";
}



int main() 
{
    CTest1 t1;
    CTest3 t3;
    t1.test();
    t3.test();   //здесь падает на вызове smth.sz1 = "asdfasdfasdfsadf", видимо компилятор/линкер путает структуры 
    return 0;
}


Ни ерроров, ни ворнингов на 4 уровне.
Отсюда возникает вопрос, каково должно быть поведение компилятора/линкера, если в двух cpp файлах встречаются структуры/классы с одинаковым именем?
Ничто не ограничивает полет мысли программиста так, как компилятор.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.