2016-06-28 2 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 width и int 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

Perfect. Спасибо – Detilium

+1

Эти * getters * и * setters * могут быть более эффективными, помещая их в файл заголовка, позволяя компилятору встраивать их. (Да, я знаю, что компилятор мог бы встраивать их в любом случае.) –

2

Вроде так.

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

Примечание Также, пожалуйста, не забудьте добавить header guard в верхней части файла .h. А в верхней части файла .cpp добавить #include "header.h" где header.h следует заменить имя файла заголовка с определением класса

+4

Зачем использовать 'this->'? – NathanOliver

+1

Это тоже хорошо. Почему бы не использовать 'this->' @NathanOliver? Я бы хотел, чтобы вы уточнили для меня :) – Detilium

+1

@NathanOliver Только мои личные предпочтения – Curious

0

Да, что они говорят, это правда.

Однако, если вы позволите мне дать вам совет, Каждый раз, когда у вас есть переменная, которую вы хотите получить/установить. Get вернет значение нужной переменной Set присвоит любое значение, которое вы хотите.

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

//Get 
int getwidth(){ 
    return width; 
} 
Смежные вопросы