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

Я продолжаю получать сообщение об ошибке C2228 слева от .topDisk должно иметь класс / структуру / объединение, и я понятия не имею, что это значит, или даже как это исправить, даже после некоторых исследований. Может ли кто-нибудь объяснить, что это за ошибка и как ее исправить? Я думаю, что предоставил вам весь код, который вам нужен.

Файл 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

Решение

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

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

в

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

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]