2012-08-25 25 views
0

這似乎是一個常見問題。我在classA中定義了一個枚舉,然後在classB中包含了classA。然後,在classB中,我定義了一個函數,它返回classA中定義的枚舉類型......見下文。我得到以下錯誤:函數返回另一個類中定義的枚舉(致命鏈接錯誤)

aFirst.obj : error LNK2019: unresolved external symbol "public: enum justEnum::things_t __thiscall usesTheEnum::returnsThings(void)" ([email protected]@@[email protected]@@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

#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; 
} 
+0

justEnum的構造函數和析構函數在哪裏定義? – chrisaycock

+0

@ user442920你不需要在C++中使用'void'指定一個空的參數列表。 – oldrinb

回答

2

您需要指定您的returnsThings()的定義是usesTheEnum類的一部分。

justEnum::things_t usesTheEnum::returnsThings() 
{ 
    return justEnum::ONE; 
} 
+0

謝謝!這有助於很多! :) – user442920

0

error LNK2019: unresolved external symbol "public: enum justEnum::things_t __thiscall usesTheEnum::returnsThings(void)"

編譯器抱怨usesTheEnum::returnThings()沒有定義,我不能看到你發佈的代碼的定義。您應該在一個翻譯單元中爲該功能提供定義。

我不認爲我可以強調它學到多麼重要,閱讀錯誤信息。編譯器正在做這是最好的告訴你什麼是錯的。

0

不舒服,但是你不能只把enum從課堂上移開嗎?

或者在類的.cpp上寫一些像 extern enum classname :: things_t; 只是爲了將enum添加到生成的lib文件中,這是將鏈接到的內容。

+0

他有關於函數定義的鏈接錯誤。這與'enum'如何定義無關。 – chrisaycock

相關問題