title: Function returns enum defined in another class (fatal link error)
body: <p>This seems like a problem that is common.  I defined an enum in classA and then included classA in classB.  Then, in classB I defined a function which returns the enum type defined in classA...see below.  I get the following error:  </p>
  
  <blockquote>
    <p>aFirst.obj : error LNK2019: unresolved external symbol "public: enum justEnum::things_t __thiscall usesTheEnum::returnsThings(void)" (?returnsThings@usesTheEnum@@QAE?AW4things_t@justEnum@@XZ) referenced in function _wmain
    1>C:\Documents and Settings\Ben\My Documents\Visual Studio 2010\Projects\aFirst\Debug\aFirst.exe : fatal error LNK1120: 1 unresolved externals</p>
  </blockquote>
  
  <pre><code>#pragma once
  class justEnum
  {
  
  public:
      justEnum(void);
      ~justEnum(void);
      enum things_t{ONE, TWO};
  };
  
  
  
  #pragma once
  #include "justEnum.h"
  
  class usesTheEnum
  {
  public:
      usesTheEnum(void);
      ~usesTheEnum(void);
      justEnum::things_t returnsThings(void);
  };
  
  
  
  #include "StdAfx.h"
  #include "usesTheEnum.h"
  #include "justEnum.h"
  
  usesTheEnum::usesTheEnum(void)
  {
  }
  
  
  usesTheEnum::~usesTheEnum(void)
  {
  }
  
  
  justEnum::things_t returnsThings()
  {
      return justEnum::ONE;
  }
  
  
  
  // tester.cpp : Defines the entry point for the console application.
  //
  
  #include "stdafx.h"
  #include &lt;stdio.h&gt;
  #include &lt;iostream&gt;
  #include "justEnum.h"
  #include "usesTheEnum.h"
  
  using namespace std;
  
  int _tmain(int argc, _TCHAR* argv[])
  {
      usesTheEnum aUser;
      justEnum anEnum;
      justEnum::things_t anotherEnum;
      anotherEnum = justEnum::ONE;
      aUser.returnsThings();
      cout &lt;&lt; anotherEnum;
      return 0;
  }
  </code></pre>