2016-06-28 139 views
0

我對C++很陌生,而且我的類定義有問題。這很可能是一個非常基本的操作,但我無法在網上找到任何相關資源,因爲我不太確定要搜索什麼。C++ - 從.h文件獲取.cpp文件中的類變量

標題說明了一切。我有一個如下所示的頭文件:

class Rectangle{ 
public: 
    int Width(); 
    int Height(); 
    int Area(); 
    void Resize(); 
private: 
    int width; 
    int height; 
} 

然後我有下面的.cpp文件。

int Rectangle::Width() 
{ 
    //return the width 
} 

int Rectangle::Height() 
{ 
    //return the height 
} 

int Rectangle::Area() 
{ 
    //return the area 
} 

void Rectangle::Resize() 
{ 
    //resize the rectangle 
} 

正如你所看到的,我已經評論說,我希望做的操作,但我不太清楚如何從頭文件訪問的變量int widthint height

同樣,這可能看起來像一個簡單的操作,但我不知道如何解決這個問題。任何幫助,高度讚賞!

+2

您是否在cpp文件中包含頭文件? –

+2

只是單挑:你在課堂定義之後缺少';'。 – MicroVirus

+2

您需要包含頭文件,並確保在類定義的最後一個大括號後面有分號。 – dasblinkenlight

回答

4

所有你需要做的就是確保你包括在頂部class頭文件的.cpp像這樣...

#include "THE_FILE_NAME.h" 

然後你可以隨心所欲地訪問它們。例如,要返回寬度和高度只是:

int Rectangle::Width() 
{ 
    return width; //or this->width 
} 

int Rectangle::Height() 
{ 
    return height; //or this->height 
} 
+0

完美。謝謝 – Detilium

+1

這些* getters *和* setters *可以通過將它們放在頭文件中,使編譯器將它們內聯,從而提高效率。 (是的,我知道編譯器可以將它們內聯。) –

2

像這樣。

int Rectangle::Width() 
{ 
    return this->width; // or `return width;` 
} 

注意也請記住,在你.h文件的頂部添加header guard。而在你的.cpp文件的頂部添加#include "header.h"其中header.h應該用類定義的頭文件的名稱替換

+4

爲什麼使用'this->'? – NathanOliver

+1

這也很整齊。爲什麼不使用'this->'@NathanOliver?我想請你詳細說明:) – Detilium

+1

@NathanOliver只是我的個人喜好 – Curious

0

是的,他們說的是真話。

但是,如果你讓我給你一個建議, 每次你有一個私人變量,你想有獲得/設置功能。 獲取將返回所需變量的值 Set將分配您想要的任何值。

enter code here  
///Set 
void setWidth(int x){ 
width=x; 
} 

//Get 
int getwidth(){ 
    return width; 
}