   namespace error
  I just started learning how to use namespaces, and I keep getting a linking error even though the code is set up exactly the same as I see it in the tutorials.I have this in a seperate header file included in "stdafx.h" >namespacejGroup{// class CTest {protected:int iVal;public:CTest () {iVal = 0;};~CTest () {};int GetVal () {return iVal;};};//void DoStuff () ;}void jGroup::DoStuff (){}And in main(), I have this >#include "stdafx.h"int _tmain(int argc, _TCHAR* argv[]){jGroup::CTestT1;jGroup::DoStuff ();cout << T1.GetVal ();system ("Pause");return 0;}And I get the following error messages:1>Linking...1>stdafx.obj : error LNK2005: "void __cdecl jGroup::DoStuff(void)" (?DoStuff@jGroup@@YAXXZ) already defined in JConsole.obj1>C:\Users\Jacob\Programming\Projects\JConsole\Debug\JConsole.exe : fatal error LNK1169: one or more multiply defined symbols foundI know there shouldnt be a redefinition error because "stdafx.h" is only included once. Does anyone know why I am getting these errors?Jacob   
  You don't (yet) understand the C++ compilation process. Each source file is compiled in isolation, so even if a file can only be included once does not prevent multiple definition errors across multiple files. I would advise you to read this.   ;  Yes, I know this..But the problem is not that there is another identifier with the same name in another file. I know how to organize files, I am just trying to show the error in the simplest way possible.   ;Quote:Original post by ChainChiefYes, I know this..But the problem is not that there is another identifier with the same name in another file. I know how to organize files, I am just trying to show the error in the simplest way possible.Remember that #include is basically a copy and paste operation. What the compiler sees is the preprocessed translation unit, it doesn't have any distinction between the header and source files.So, even though you implemented "jGroup::DoStuff ()" in a single file, that doesn't matter because it gets compiled into every including file. So, file_a.cpp gets compiled to file_a.obj, and file_b.cpp gets compiled to file_b.obj, and both contain a copy of jGroup::DoStuff (). The compiler is not smart, it will not check to see if they are identical and merge them.The solutions are outlined in the article I linked you to, but essentially function definitions must either be in a source file (.cpp) or declared 'inline'.   