请帮助我分离以下程序中的类,标题和main()
。我尽我所能,但有问题。
#include "stdafx.h"
#include<iostream>
#include<string>
using namespace std;
class player
{
public:
string name;
string type;
void getdata()
{
cout<<"Enter the name of the Player : "<<endl;
cin>>name;
cout<<"Enter the Game he play : "<<endl;
cin>>type;
}
void display()
{
cout<<"The name of the Player is : "<<name<<endl;
cout<<"The game he will play is : "<<type<<endl;
}
};
int main()
{
player sachin;
sachin.getdata();
sachin.display();
system("pause");
return(0);
}
答案 0 :(得分:4)
你的意思是你如何将它分成标题和cpp文件?
如果在Player.h中如此,你可以执行以下操作:
#ifndef __PLAYER_H_
#define __PLAYER_H_
#include<string>
using namespace std;
class player
{
protected: // could be private
string name;
string type;
public:
void getdata();
void display();
};
#endif
在player.cpp中:
#include "stdafx.h"
#include "Player.h"
#include<iostream>
void player::getdata()
{
cout<<"Enter the name of the Player : "<<endl;
cin>>name;
cout<<"Enter the Game he play : "<<endl;
cin>>type;
}
void player::display()
{
cout<<"The name of the Player is : "<<name<<endl;
cout<<"The game he will play is : "<<type<<endl;
}
然后在main.cpp中你会做以下事情:
#include "stdafx.h"
#include "player.h"
int main()
{
player sachin;
sachin.getdata();
sachin.display();
system("pause");
return(0);
}
这是将所有内容拆分为单独的标头和cpp文件的理想方法:)
答案 1 :(得分:4)
C ++中典型的文件分离如下:
// myapp.cpp
// ---------
#include "player.h"
#include <cstdlib>
using std::system;
int main()
{
player sachin;
sachin.getdata();
sachin.display();
system("pause");
return(0);
}
// player.h
// --------
// or #pragma once, since you're on MS.
#ifndef player_h
#define player_h
#include<string>
class player
{
public:
std::string name;
std::string type;
void getdata();
void display();
};
#endif
// player.cpp
// ----------
#include "player.h"
#include<iostream>
#include<string>
using namespace std;
void player::display()
{
cout<<"The name of the Player is : "<<name<<endl;
cout<<"The game he will play is : "<<type<<endl;
}
void player::getdata()
{
cout<<"Enter the name of the Player : "<<endl;
cin>>name;
cout<<"Enter the Game he play : "<<endl;
cin>>type;
}
还有一些其他的东西可以整理:你可能想把stdafx.h放回去,播放器中的字符串不需要公开。
另请注意,我没有在头文件中添加“using namespace std”。许多人不喜欢这样做,至少不是在全球范围内,但如果你的标题做了,那么如果他们使用你的类,那就强迫他们。当文件只适合你时,这两种方式都没有多大关系,但如果标题意外地“使用”了东西,那么在大型项目中这很重要。它可能会引起某些问题,因为他们没有意识到std中的所有函数都是可见的,并且在尝试调用别的东西时偶然调用一个函数。
我故意在三个文件中使用了所有三个选项:using namespace std;
,using std::system;
或每次都指定命名空间。
答案 2 :(得分:1)
如果你想分开你的课程,你应该使用创建两个文件; .h&amp;的.cpp。
在头文件中放置定义和声明,在CPP文件中实现方法。
Player.h
#ifndef __PLAYER_H_
#define __PLAYER_H_
#include <string>
class Player
{
public:
Player();
~Player();
// Methods
void GetData();
void Display();
private:
std::string Name;
std::string Type;
}
#endif
Player.cpp
#include "Player.h"
Player::Player(): Name(""),
Type("")
{
}
Player::~Player(){}
void Player::GetData()
{
std::cout << "Enter the name of the Player : " << std::endl;
std::cin >> name;
std::cout << "Enter the Game he play : " << std::endl;
std::cin >> type;
}
void Player::Display()
{
std::cout <<"The name of the Player is : " << name << std::endl;
std::cout <<"The game he will play is : " << type << std::endl;
}
编辑:
类成员变量永远不应该公开;如果需要修改成员变量,请编写set方法。