我已将其复制出一本书。我只是不确定要在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;
}
答案 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::cout
,std::cin
,std::string
等).h
和.cpp
个文件,所以不要把一半的实现放在头文件中,其余的 - 放在源文件中。将所有定义放在源文件中(除非您想要inline
函数,在标题中实现)__
或_
开始 - 它们由标准保留。