河内的班级与塔

时间:2018-10-05 09:50:26

标签: c++ class towers-of-hanoi

我一直在把'.topDisk'的错误C2228保留下来,它必须具有class / struct / union,即使经过一些研究,我也不知道它的含义,甚至是如何解决它。有人可以解释什么是错误以及如何解决该错误吗?我想我已经为您提供了所需的所有代码。

HanoiPegClass.cpp文件

//A function moving one disk from one peg to another
void moveDisk(Peg& beginning, Peg& destination)
{
    assert(beginning.getNumDisks() > 0);
    if (destination.getNumDisks() > 0)
    {
        //Where the error is
        assert(beginning.getNumDisks.topDisk() < destination.getNumDisks.topDisk());
    }

    destination.addDisk(beginning.topDisk());
    beginning.removeDisk();
}

Peg.cpp文件

//Function to return the disk count (amount of discs on each peg)
unsigned int Peg::getNumDisks() 
{
    return diskStack.size();
}

//Function to return the value of the top disk
int Peg::topDisk()
{
    return diskStack.back();    
}

Peg.h文件

#pragma once
#include <vector>
#include <string>
using namespace std;

class Peg
{

private:
    vector<int> diskStack;
    string pegName;
    void setName(string name);
public:
    Peg(string name, int totalDisks);
    unsigned int getNumDisks();
    void printDisks();
    string getName();
    int topDisk();
    void addDisk(int totalDisks);
    int removeDisk();
    ~Peg();
};

1 个答案:

答案 0 :(得分:2)

git checkout是一个返回无符号整数的函数,因此不能在其上使用getNumDisks。您只能在..structure上使用class运算符。 因此,更改

union

assert(beginning.getNumDisks.topDisk() < destination.getNumDisks.topDisk());