これはよくある問題のようです。classAで列挙型を定義してから、classAをclassBに含めました。次に、classBで、classAで定義された列挙型を返す関数を定義しました...以下を参照してください。次のエラーが発生します。
aFirst.obj:エラーLNK2019:未解決の外部シンボル "public:enum justEnum :: things_t __thiscall usedTheEnum :: returnsThings(void)"(?returnsThings @ usedTheEnum @@ QAE?AW4things_t @ justEnum @@ XZ)関数_wmain 1> C :\ Documents and Settings \ Ben \ My Documents \ Visual Studio 2010 \ Projects \ aFirst \ Debug \ aFirst.exe:致命的なエラーLNK1120:1つの未解決の外部
#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 <stdio.h>
#include <iostream>
#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 << anotherEnum;
return 0;
}