2012-02-22 3 views
1

У меня есть файл GetL.hxxСоздать Cxx файл HXX файл в C++

#ifndef GetL_included 
#define GetL_included 
#include <iostream> 
using namespace std; 
class GetL 
{ 
public: 
    virtual int getWidth(); 
}; 
#endif //GetL_include 

Здесь класс GetL содержит только один виртуальную функцию и, таким образом, является абстрактным классом. Как я могу создать файл .cxx для этого .hxx-файла?

+1

Используйте «добавить новый файл» в свою IDE или создайте новый файл, используя свой любимый текстовый редактор, и добавьте его в свой скрипт сборки или вы имеете в виду «что я должен помещать в исходный файл»? –

ответ

4

Это не абстрактный класс. Абстрактный класс содержит чистую виртуальную функцию. Например, если вы хотите сделать свой абстракционный класс, вы можете поставить virtual int getWidth() = 0;, который заставит функцию getWidth() быть определена в производном классе.

Возможно, стоит также упомянуть, что в заголовочный файл не стоит указывать операторы using. Он излишне загрязняет текущее пространство имен и может привести к конфликтам имен.

+0

, если это не абстрактный класс, а функция - 'virtual int getWidth()', то как я могу записать файл .cxx. –

+0

Вы можете просто написать его как обычный файл класса. В этом случае ключевое слово 'virtual' просто означает, что производный класс имеет возможность переопределить эту конкретную функцию. –

+0

Вы имеете в виду, что в GetL.cxx я должен дать тело функции getWidth()? –

2

Если ваш класс должен быть абстрактным, вы должны объявить getWidth() абстрактным.

Нравится virtual int getWidth() = 0;. Это делает функцию чистой виртуальной, что является требованием для абстрактного класса.

Тогда нет необходимости создавать .cxx-файл, так как нет никакой реализации, чтобы перейти с полностью абстрактным классом.

Только если у вас есть больше методов, из которых не все являются чистыми виртуальными, вам потребуется создать файл реализации. Пока класс состоит только из чистых виртуальных функций, вам не нужно создавать реализацию.

Edit: Чтобы обеспечить реализацию, создать новый файл с именем GetL.cxx

#include "GetL.hxx" 

int GetL::getWidth() { 
    // Insert implementation here 
} 

В зависимости от вашего IDE и настройки проекта может потребоваться #include "stdafx.h" в верхней части этого файла реализации. Обратите внимание: если вы предоставите реализацию, ваш класс больше не будет абстрактным, и вы не должны использовать = 0 в своем объявлении метода.