0

我从一本书中复制了这个。我只是不确定要在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;
}
4

2 回答 2

0

再看这部分:

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

Cat::~Cat() 

您缺少}构造函数的关闭,以及;函数头之后的额外内容。

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

于 2013-02-08T09:08:49.217 回答
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::cout,、、、std::cinstd::string
  • 正如你所拥有的.h.cpp文件一样,不要将一半的​​实现放在头文件中,其余的放在源文件中。将所有定义放在源文件中(除非你想要inline函数,在头文件中实现)
  • __避免使用以or开头的名称,_它们是标准保留的。
于 2013-02-08T09:09:25.987 回答