Я продолжаю получать сообщение об ошибке 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();
};
getNumDisks
это функция, которая возвращает целое число без знака, поэтому вы не можете использовать .
в теме. Вы можете использовать .
оператор на structure
или же class
или же union
только.
Так что меняй
assert(beginning.getNumDisks.topDisk() < destination.getNumDisks.topDisk());
в
assert(beginning.topDisk() < destination.topDisk());
Других решений пока нет …