Две структуры с одинаковым именем в двух cpp
От: Аноним  
Дата: 12.04.14 16:07
Оценка:
Сейчас компилирую код. Есть несколько файлов, в одном их них определена структура
struct CDirItem
{
  UInt64 Size;
  FILETIME CTime;
  FILETIME ATime;
  FILETIME MTime;
  UString Name;
  UInt32 Attrib;
  int PhyParent;
  int LogParent;
  
  CDirItem(): PhyParent(-1), LogParent(-1) {}
  bool IsDir() const { return (Attrib & FILE_ATTRIBUTE_DIRECTORY) != 0 ; }
};

Объявление через h файл используют несколько cpp.
В основном файле тоже объявлена эта струкрута
struct CDirItem
{
  UInt64 Size1;
  UInt64 Size;
  FILETIME CTime;
  FILETIME ATime;
  FILETIME MTime;
  UString Name;
  UString FullPath;
  UInt32 Attrib;

  bool isDir() const { return (Attrib & FILE_ATTRIBUTE_DIRECTORY) != 0 ; }
};

в другой форме. Этот файл не использует h файл в котором объявлен первый вариант.
Я использую структуру так
CDirItem di;

При выполнении программа падает. Под отладкой вижу, что вызывается конструктор первой структуры, т.е не той что нужно. Ситуация исправляется сменой имени CDirItem на CDirItem2 в основном файле, но хочется понять почему генерируется код не для локальной структуры, а для объявленной в другом *.cpp файле. Я сделал небольшой тестовый проект с аналогичной ситуацией и на нем компилятор использует структуру, объявленную в том же самом *.cpp файле, а не в другом...
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.