Re: error C2371: 'LineCollection' : redefinition; different basic
types
On Aug 4, 8:18 pm, "Samant.Tru...@gmail.com" <Samant.Tru...@gmail.com>
wrote:
Ok I will try to write minimal code.
I have a project called "FileUtil"
It has two header files and 2 cpp files called
1. FileCompare.h and FileCompare.cpp
2. Compare.h and Compare.cpp
FileCompare.h
//Some Includes "Doesnot inclide compare.h"
typedef std::vector<line> LineCollection;
typedef LineCollection::iterator LineCollectionIter;
class FileCompare
{
...
LineCollection compFileMap;
LineCollection baseFileMap;
...
};
Compare.h
//Some Includes "Doesnot inclide FileCompare.h"
typedef std::vector<line> LineCollection;
typedef LineCollection::iterator LineCollectionIter;
class Compare
{
...
LineCollection m_baseLines;
LineCollection m_compLines;
...
};
Now I am getting error C2371: 'LineCollection' : redefinition;
different basic types.
I know that they are defined twice. I don't know why since two header
files are independant on each other.
1. As others have pointed out: you haven't posted enough for us
to reproduce the problem, so anything we say is just a
guess.
2. What is "line"? You're allowed multiple typedef's, even in
the same translation unit, as long as they resolve to the
same thing. Your error message strongly suggests that you
have different definitions of "line", which will lead to no
end of problems.
3. FileCompare.h may not include Compare.h, and vice versa, but
logically, you have to expect some client code to include
both of them. In which case, if "line" is defined
differently in the two headers, you'll get a problem at
compile time. (Otherwise, the problems won't appear until
link time, or possibly even runtime.)
--
James Kanze (GABI Software) email:james.kanze@gmail.com
Conseils en informatique orient=E9e objet/
Beratung in objektorientierter Datenverarbeitung
9 place S=E9mard, 78210 St.-Cyr-l'=C9cole, France, +33 (0)1 30 23 00 34