声明一个C ++类

时间:2014-04-05 23:11:44

标签: c++ class

我正在努力知道如何创建一个类。我想创建一个“播放器”类,我想要做的就是传递名称,而我将让其他变量从0开始,直到它们在游戏运行时更新(后来在程序中)

Player::Player(string name_in)    
{
    name = name_in;
    int numOfWins = 0;
    int numOfLoses = 0;
    int numOfDraws = 0;
    int totalMatches = 0;
}

目前,numOfWins,numOfLoses,numOfDraws和totalMatches存在很多错误。我该怎么做才能解决这个问题?

4 个答案:

答案 0 :(得分:1)

您获得的错误,至少来自您发布的代码段,是因为您无法在构造函数中声明变量 - 您在类主体中声明它们并在构造函数中初始化或使用其他函数。

#include <string>

class Player {
public:
    Player( std::string const& name_in) : name( name_in),
                                          numOfWins(), numOfLoses(),
                                          numOfDraws(), totalMatches()
                                          {}  // constructor 
                                              // will initialize variables
                                              // numOfWins() means default 
                                              // initialization of an integer
private:
    std::string name;
    int numOfWins;
    int numOfLoses;
    int numOfDraws;
    int totalMatches;
};

用法:

int main() {
    Player( "player_one");
    return 0;
}

答案 1 :(得分:1)

错误可能在你的int ...部分中,这实际上是在构造函数中创建了一个新的局部变量。

试试这个版本:

#include <string>
using namespace std;

class Player
{
    string name;
    int numOfWins;
    int numOfLoses;
    int numOfDraws;
    int totalMatches;

public:
    Player(string name_in)    
    {
        name = name_in;
        numOfWins = 0;
        numOfLoses = 0;
        numOfDraws = 0;
        totalMatches = 0;
    }
};

答案 2 :(得分:0)

您应该在类声明中声明其他实例变量,而不是将它们声明为本地变量(这完全没用)。

// This part goes in the header
class Player {
    string name;
    int numOfWins;
    int numOfLoses;
    int numOfDraws;
    int totalMatches;
public:
    Player(string name_in);
};

现在在构造函数中,您可以使用初始化列表:

// This part goes into the CPP file
Player::Player(string name_in)
// Initialization list precedes the body of the constructor
: name(name_in), numOfWins(0), numOfLoses(0), numOfDraws(0), totalMatches(0) {
// In this case, the body of the constructor is empty;
// there are no local variable declarations here.
}

答案 3 :(得分:0)

有点模糊,但我会对此采取行动。你可能想要:

class Player{
    string name;    
    int numOfWins;
    int numOfLosses;
    int numOfDraws;
    int totalMatches;
    Player(string name_in)
};

Player::Player(string name_in){
    name = name_in;
    numOfWins = 0;
    numOfLosses = 0;
    numOfDraws = 0;
    totalMatches = 0;
}

Haven在一段时间内没有使用过C ++,所以这可能有问题。