0
我創建了一個名爲Cat的類。當我嘗試訪問Cat類時,它顯示以下錯誤。爲什麼class在使用類名相同的頭文件和cpp文件創建時出現錯誤
||=== Build file: "no target" in "no project" (compiler: unknown) ===|
F:\Classes\Classes.o:Classes.cpp|| undefined reference to 'Cat::Cat()'|
F:\Classes\Classes.o:Classes.cpp|| undefined reference to 'Cat::speak()'|
F:\Classes\Classes.o:Classes.cpp|| undefined reference to 'Cat::~Cat()'|
F:\Classes\Classes.o:Classes.cpp|| undefined reference to 'Cat::~Cat()'|
||error: ld returned 1 exit status|
||=== Build failed: 5 error(s), 0 warning(s) (0 minute(s), 0 second(s)) ===|
這裏是我的代碼:
對於Classes.cpp
#include<iostream>
#include "Cat.h"
using namespace std;
int main()
{
cout<<"Hello"<<endl;
Cat cat1;
cat1.speak();
cout<<"Program Ended..."<<endl;
return 0;
}
對於Cat.cpp
#include<iostream>
#include "Cat.h"
using namespace std;
Cat::Cat()
{
cout<<"Cat created.."<<endl;
color = 'R';
}
Cat::~Cat()
{
cout<<"Cat Destroyed.."<<endl;
}
void Cat::speak()
{
if(color == 'R')
cout<<"I am a red Cat....."<<endl;
else
cout<<"I am a Cat.....------"<<endl;
}
對於Cat.h
#ifndef CAT_H_INCLUDED
#define CAT_H_INCLUDED
class Cat
{
public:
void speak();
char color;
Cat();
~Cat();
protected:
private:
};
#endif // CAT_H_INCLUDED
我應該提一件事。所有這些文件都在同一個文件夾中,我正在使用CodeBlocks。
它似乎忘記了在你的版本中包含Cat.cpp。 –
Grt !!現在正在工作。但是爲什麼我應該包含Cat.cpp文件,而我已經包含了定義該類的頭文件呢? @RSahu – Gulzar
Cat的成員函數只在.h文件中聲明。它們在.cpp文件中定義。當.h文件在另一個文件中包含'#inc'時,編譯器不會自動從.cpp文件獲取實現。 –