河内塔 类
Towers of Hanoi with Classes
我一直收到错误 C2228 left of '.topDisk' must have 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();
};
getNumDisks
是一个 returns 无符号整数的函数,因此您不能在其上使用 .
。您只能在 structure
或 class
或 union
上使用 .
运算符。
所以改变
assert(beginning.getNumDisks.topDisk() < destination.getNumDisks.topDisk());
至
assert(beginning.topDisk() < destination.topDisk());
我一直收到错误 C2228 left of '.topDisk' must have 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();
};
getNumDisks
是一个 returns 无符号整数的函数,因此您不能在其上使用 .
。您只能在 structure
或 class
或 union
上使用 .
运算符。
所以改变
assert(beginning.getNumDisks.topDisk() < destination.getNumDisks.topDisk());
至
assert(beginning.topDisk() < destination.topDisk());