我創建了我的頭文件的類和#included在main.cpp「theclassname.h」但當我嘗試編譯我得到「未定義引用」ClassName :: TheConstructor(bool,int * ,std :: basic_string,std :: allocator>)「」與主C++類的問題
我在我的Classname.cpp文件中編寫了構造函數和一個名爲「ClassName :: start」的函數,但由於某種原因,它給了這個未定義的引用問題對於這個開始函數和我的析構函數,它也被編碼在我的cpp文件中。我在main函數中調用的每個函數都是在頭文件中編寫的函數,但不會觸發此錯誤,但每次調用編譯到我的.cpp文件中的函數時都會觸發此函數。
我見過很多關於此的帖子,但是我已經用正確的參數和返回類型正確地編碼了它們,並確保函數名稱與頭文件中定義的名稱相同。除了拼寫錯誤之外,還有什麼可能導致這種情況,因爲我已經檢查了超過10次。
感謝
#ifndef THECLASSNAME_H
#define THECLASSNAME_H
#include <iostream>
class TheClassName {
public:
TheClassName(bool theBool=true, int *theArray=0,
std::string message="-1");
~TheClassName();
void start();
void setBool(bool theBool) {aBool=theBool;}
bool getBool() {return aBool;}
void setMessage(std::string message) {mssg=message;}
std::string getMessage() {return mssg;}
std::string getHello() {return hello;}
private:
int *anArray;
bool aBool;
std::string mssg;
std::string hello;
void aFunction1(bool);
void aFunction2();
void aFunction3();
void aFunction4();
};
#endif
對不起大家只是定了!在我的makefile我做
exec1: main.o classname.o
g++ -o exec1 main.o
而不是
exec1: main.o classname.o
g++ -o exec1 main.o classname.o
謝謝你們這麼多!
而不是試圖描述你的代碼,你應該發佈你的代碼(或者至少是你的代碼的簡化代表版本)。 –
聽起來像.cpp文件不是你的項目的一部分。如果將它添加到項目中,編譯器和鏈接器將查找函數定義。 – tmpearce
我想你應該改編/編輯你以前的問題(http://stackoverflow.com/questions/10386144/constructor-parameter-issue-c) –