【发布时间】:2011-07-25 18:15:07
【问题描述】:
我对手头错误的答案感到很困惑。
我有一个想要继承的类。但是当我尝试继承时,我得到了上述错误。 这些类都不使用头文件,因为我这样做只是为了了解虚拟覆盖的工作原理。我对 C++ 很陌生。所以这并不是要真正做点什么,更像是更好地理解 C++。
当我在谷歌上寻找答案时,它通常以头文件和“#include”关键字的问题告终。
而且也没有太多代码可以使用。 有什么建议么?
编辑:
就像我说的代码不多,我没有包含的其他文件也与钢琴家没有什么不同
/*
* File: main.cpp
* Author: Sidar
*
* Created on 19 juli 2011, 17:51
*/
#include <cstdlib>
#include <iostream>
#include "Musician.cpp"
#include "Pianist.cpp"
#include "MasterPianist.cpp"
#include "JuniorPianist.cpp"
using namespace std;
/*
*
*/
int main(int argc, char** argv) {
Musician *m = new Musician();
Pianist *p = new Pianist();
//JuniorPianist *jp = new JuniorPianist();
MasterPianist *mp = new MasterPianist();
//__________________________
cout << "Pianist greets:\n";
m->greet();
cout << "And this is a:\n";
m = p;
m->greet();
cout << "The pianist states his proffesion:\n";
m = mp;
m->greet();
cout << "And this is his student:\n";
// m = jp;
m->greet();
return 0;
}
要继承的类
#include <iostream>
using namespace std;
class Musician{
public:
//Constructors
Musician(){}
Musician(const Musician& m){}
~Musician(){}
//Methods/Functions
virtual void greet(){
cout << "Hello";
}
};
试图继承的类。
/*
* File: Pianonist.cpp
* Author: Sidar
*
* Created on 19 juli 2011, 17:58
*/
#include <iostream>
using namespace std;
class Pianist: public Musician {
public:
Pianist(){}
Pianist(const Pianist& orig){}
~Pianist() {}
//____________________________________
void greet(){
cout << " This is pianist";
}
};
【问题讨论】:
-
代码不多,贴出来怎么样?从描述中很难猜出问题出在哪里,但如果我不得不猜测,我会在其中一个类定义中说缺少
;。 -
为什么要包含实现文件?
-
指向错误所在的行
-
你在
class Pianist: public Musician得到错误我猜? -
@Bart,是的,它来自那条线。