1. 程式人生 > >解決C++編譯出現的重定義問題:multiple definition of ’XXX‘錯誤

解決C++編譯出現的重定義問題:multiple definition of ’XXX‘錯誤

  1 //file_NO2:hello.cpp
  2 #include<iostream>
  3 #include"hello.h"
  4 using namespace std;
  5 hello::hello()
  6 {
  7 }
  8 
  9 int hello::Display()
 10 {
 11     cout<<"Hello, World!\n"<<endl;
 12     return 0;
 13 }

  1 //file_NO1:hello.h
  2 #ifndef HELLO_H
  3 #define HELLO_H
  4 class hello{
  5     public:
  6         hello();
  7         int  Display();
  8 };

  1 //file_NO3:myfirst.cpp
  2 #include <iostream>
  3 #include"hello.cpp"
  4 using namespace std;
  5 
  6 int main()
  7 {
  8    hello theHello;
  9     theHello.Display();
 10    //cout<<"Hello"<<endl;
 11     return 0;
 12 }

編譯出現如下錯誤
hello.o: In function `hello::hello()':
hello.cpp:(.text+0x0): multiple definition of `hello::hello()'
myfirst.o:myfirst.cpp:(.text+0x0): first defined here
hello.o: In function `hello::Display()':
hello.cpp:(.text+0x6): multiple definition of `hello::Display()'
myfirst.o:myfirst.cpp:(.text+0x6): first defined here
hello.o: In function `hello::hello()':
hello.cpp:(.text+0x0): multiple definition of `hello::hello()'
myfirst.o:myfirst.cpp:(.text+0x0): first defined here
collect2: ld 返回 1
解決辦法: 把myfirst.cpp中的#incldue”hello.cpp"改為#include“hello.h"即可。 哈哈,菜鳥開始學C++,這個錯誤比較低階,希望以後不會再犯了。