2016-12-04 42 views
0

我正在學習C++,並且教程要求我將另一個項目添加到我現在擁有的項目中。 另外,我被要求使用前向聲明,所以我可以使用該添加的文件。在代碼塊中將兩個項目編譯在一起

這裏是我的主要項目:

#include <iostream> 
#include "io.cpp" 
using namespace std; 


int readNumber(); 

void writeResult(int x); 


int main() { 

    int x = readNumber(); 
    int y = readNumber(); 
    writeResult(x + y); 
    return 0; 


} 

這裏的補充文件名爲io.cpp:

#include <iostream> 

using namespace std; 

int readNumber() { 


    cout << "Enter a number: "; 
    int x; 
    cin >> x; 
    return x; 
} 

void writeResult(int x) { 
    cout << "Sum of your numbers is " << x << endl; 
} 

![And here's a screenshot so you can see what error I'm getting which talks about multiple definition and you can see where those two files are added. According to the tutorial my code is okay but compiler complains. Why ?]1

+0

我不熟悉的代碼塊,但你必須分別編譯兩個源文件,然後鏈接生成的目標文件一起,使上執行。 – Jonas

回答

0

在代碼塊,創建一個新的類時,它應該自動頭文件。用頭文件編程是最好的做法。以下是我嘗試過的代碼,它與io.h一起工作。

的main.cpp

#include <iostream> 
#include "io.h" 

using namespace std; 

io inOut; 


int main() 
{ 

    int x = inOut.readNumber(); 
    int y = inOut.readNumber(); 
    inOut.writeResult(x + y); 
    return 0; 

} 

io.h

#ifndef IO_H 
#define IO_H 


class io 
{ 
    public: 
     int readNumber(); 
     void writeResult(int); 
}; 

#endif 

io.cpp

#include <iostream> 
#include "io.h" 

using namespace std; 

int io::readNumber() 
{ 
    cout << "Enter a number: "; 
    int x; 
    cin >> x; 
    return x; 
} 

void io::writeResult(int x) 
{ 
    cout << "Sum of your numbers is " << x << endl; 
} 

我以前的碼塊來編譯上面寫的代碼,它的工作完美。

+0

謝謝!奇怪的因爲我沒有被指示這樣做。我從一開始就參加這個課程......可能有一些我錯過了。說明說只有main.cpp和io.cpp。我將在下一節課中學習關於標題的細節。感謝您花時間! –

0

好的,當添加更多的cpps他們不應該被包括在頂部。這就是編譯器說這個函數被多次定義的原因。我所要做的只是擺脫那一行。

這裏是我的源:

http://www.cplusplus.com/forum/beginner/44651/

相關問題