我一直在把'.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();
};
答案 0 :(得分:2)
git checkout
是一个返回无符号整数的函数,因此不能在其上使用getNumDisks
。您只能在.
或.
或structure
上使用class
运算符。
因此,更改
union
到
assert(beginning.getNumDisks.topDisk() < destination.getNumDisks.topDisk());