簡體   English   中英

#include .h或.cpp文件?

[英]#include .h or .cpp file?

所以我有一個看起來很奇怪的問題:當我導入一個單獨的類的.h文件時,我的非常基本的程序會生成一條錯誤消息(未定義對'foo :: foo(int)'的引用)。 但是,當我將導入文件更改為.cpp時,一切正常。

現在,我已經閱讀了一些,看了一些視頻教程,他們都說相同:導入.h文件。 那為什么不起作用呢?

我在Windows 7中使用Code :: Blocks,在其中編譯和運行(沒有命令行),我確實懷疑某些設置不正確,但是,我想確定是否是我的代碼失敗。

Main.cpp:

#include <iostream>
#include "Foo.h"  //This don't work. If i include Foo.cpp it does. 

using namespace std;

int main()
{
    Foo k(10);
    cout << k.getInt() << endl;
}

foo.h:

#ifndef FOO_H
#define FOO_H

class Foo
{
    public:
        Foo(int tall);
        int getInt()const;
    protected:
    private:
        int m;
};

#endif

Foo.cpp:

#include "Foo.h"

Foo::Foo(int tall)
: m(tall)
{
    //ctor
}

int Foo::getInt()const
{
    return m;
}

在執行鏈接步驟時,您無法編譯和/或鏈接Foo.cpp文件。 我對Code :: Blocks並不熟悉,所以我無法告訴您如何解決。

您需要同時編譯main.cppfoo.cpp並將兩個結果對象文件鏈接在一起。

右鍵單擊您的.cpp文件,然后轉到屬性。 在“構建”選項卡上,確保已檢查“編譯”,“鏈接”,“調試”和“發布”。

在此處輸入圖片說明

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM