2016-06-28 100 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; 
}