C ++中单独文件中的类?

时间:2013-02-08 09:06:28

标签: c++ oop class

我已将其复制出一本书。我只是不确定要在main.cpp源文件中添加什么来使其运行。

我知道类声明放在.h文件中,实现放在.cpp文件中。我需要在main.cpp写一下什么?

我尝试了很多不同的东西,但我只是收到了很多错误信息。

 // cat.h
#ifndef ____2_cat_implementation__Cat__
#define ____2_cat_implementation__Cat__

#include <iostream>
using namespace std;
class Cat
{
public:
Cat (int initialAge);
~Cat();
int GetAge() { return itsAge;}              
void SetAge (int age) { itsAge = age;}      
void Meow() { cout << "Meow.\n";}          
private: int itsAge;
};

#endif /* defined(____2_cat_implementation__Cat__) */

...

// cat.cpp
#include <iostream>
#include "Cat.h"
using namespace std;

Cat::Cat(int initialAge) 
{
itsAge = initialAge;
}

Cat::~Cat() 
{

}

int main()
{
    Cat Frisky(5);
    Frisky.Meow();
    cout << "Frisky is a cat who is ";
    cout << Frisky.GetAge() << " years old.\n";
    Frisky.Meow();
    Frisky.SetAge(7);
    cout << "Now Frisky is " ;
    cout << Frisky.GetAge() << " years old.\n";
    return 0;
}

2 个答案:

答案 0 :(得分:0)

再看一遍这个部分:

Cat::Cat(int initialAge); 
{
itsAge = initialAge;

Cat::~Cat() 

您错过了构造函数的结束},以及函数头后的额外;

在不相关的说明中,不要使用以下划线开头的全局名称(如____2_cat_implementation__Cat__),这些名称是由规范保留的。

答案 1 :(得分:0)

您缺少}和必填;

  //----------------------v
  Cat::Cat(int initialAge); 
  {
      itsAge = initialAge;
  }
//^

  

我需要在main.cpp中写什么

通常,正如您所指出的,.h文件包含声明和.cpp文件 - 定义。然后,main.cpp文件应包含main函数(不必命名文件,包含main函数main.cpp。它可以是任何内容。

因此,在您的示例中,您可以使用以下内容创建main.cpp文件:

// include the declarations file
#include "cat.h"

// include the header for cin/cout/etc
#include <iostream>

using namespace std;

int main()
{
    Cat Frisky(5);
    Frisky.Meow();
    cout << "Frisky is a cat who is ";
    cout << Frisky.GetAge() << " years old.\n";
    Frisky.Meow();
    Frisky.SetAge(7);
    cout << "Now Frisky is " ;
    cout << Frisky.GetAge() << " years old.\n";
    return 0;
}

其他说明:

  • using namespace std;是不好的做法,尤其是在头文件中。请改用std::(例如,std::coutstd::cinstd::string等)
  • 因为你有.h.cpp个文件,所以不要把一半的实现放在头文件中,其余的 - 放在源文件中。将所有定义放在源文件中(除非您想要inline函数,在标题中实现)
  • 避免使用名称,从___开始 - 它们由标准保留。