Башни Ханоя с классами - PullRequest
       7

Башни Ханоя с классами

0 голосов
/ 05 октября 2018

Я получаю сообщение об ошибке C2228 слева от .topDisk, которое должно иметь класс / 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 голосов
/ 05 октября 2018

getNumDisks - это функция, которая возвращает целое число без знака, поэтому вы не можете использовать . для него.Вы можете использовать оператор . только на structure или class или union.Так что измените

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

на

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