<分区>
所以我试图创建一个 Die 类和一个 LoadedDie 类,其中 Die 类是基类,而 LoadedDie 类是派生类。两个类之间的唯一区别是 LoadedDie 中的 roll 函数有 25% 的机会获得最高数字,而 Die 有 1/6 的机会。这是我第一次使用派生类,我似乎在尝试完成这项任务时遇到了很大的问题。有人可以向我解释它是如何工作的,并向我展示我将如何在我的类(class)中做到这一点(因为我是视觉学习者并且需要示例)。我知道我的基类 (Die) 在移动到我的 LoadedDie 之前进行了测试。
模具.cpp
#include<iostream>
#include <cstdlib>
using namespace std;
class Die{
public:
Die();
Die(int numSide);
virtual int roll() const;
int rollTwoDice(Die d1, Die d2);
int side;
};
Die::Die():side(6){}
Die::Die(int numSide):side(numSide){}
int Die::roll() const{
return rand() % side + 1;
}
int Die::rollTwoDice(Die d1, Die d2){
return d1.roll()+d2.roll();
}
加载芯片.cpp
#include<iostream>
#include <cstdlib>
#include "Die.cpp"
using namespace std;
class LoadedDie: public Die{
public:
LoadedDie();
LoadedDie(int numSide);
virtual int loadedroll() const;
};
LoadedDie::LoadedDie():side(6){}
LoadedDie::LoadedDie(int numSide):side(numSide){}
int LoadedDie::loadedroll() const{
if ((rand() % 2)+1) = 1){
return side;
}
return (rand() % (side-1)) + 1;
}
int LoadedDie::rollTwoDice(LoadedDie d1, LoadedDie d2){
return d1.roll()+d2.roll();
}
我的 DieTester.cpp(只是一个测试上述类是否工作的主类):
#include "LoadedDie.cpp"
#include<iostream>
#include<time.h>
#include <stdlib.h>
using namespace std;
int main(){
srand(time(NULL));
Die d(6);
LoadedDie dl(6);
cout << d.roll()<<endl;
cout<<"ld " << dl.roll()<<endl;
}
使用上面的类,我在运行 DieTester.cpp 时遇到此错误(如果有帮助的话):
In file included from DieTester.cpp:1:
LoadedDie.cpp: In constructor ‘LoadedDie::LoadedDie()’:
LoadedDie.cpp:13: error: class ‘LoadedDie’ does not have any field named ‘side’
LoadedDie.cpp: In constructor ‘LoadedDie::LoadedDie(int)’:
LoadedDie.cpp:15: error: class ‘LoadedDie’ does not have any field named ‘side’
LoadedDie.cpp: In member function ‘virtual int LoadedDie::loadedroll() const’:
LoadedDie.cpp:18: error: expected primary-expression before ‘=’ token
LoadedDie.cpp:18: error: expected ‘;’ before ‘)’ token
我认为这些错误是由于我没有正确派生类造成的。有人可以向我解释这是如何完成的吗?