错误处理1: D:\a1-C++\C++作业\第五次1.cpp undefined reference to `vtable for Shape'
在编译程序的时候遇到此误,在google上查,很多地方都说是因为虚基类里面的虚拟析构函数没有提供实现导致的。但是我的已经提供了实现,也不行。最后发现是其他没有提供实现的虚函数造成的。所以,在一个虚基类里,如果不提供函数的缺省实现,一定要定义成纯虚函数,否则就会造成此问题。
#include <iostream> using namespace std; #define pi 3.14
class Shape{ public: static double sum; virtual void show()const; };
double Shape::sum = 0;
class Circle : public Shape{ private: double r; public: Circle(double r1):r(r1){ sum += r * r * pi; } void show()const{ cout << "圆:" << endl; cout << "圆的半径:" << r << endl; cout << "圆的面积:" << r * r * pi << endl; } }; class Rectanglez: public Shape{ private: double x; public: Rectanglez(double x1): x(x1){ sum += x * x; } void show()const{ cout << "正方形:" << endl; cout << "正方形的边长:" << x << endl; cout << "正方形的面积:" << x * x << endl; } }; class Rectanglec: public Shape{ private: double x, y; public: Rectanglec(double x1, double y1): x(x1), y(y1){ sum += x * y; } void show()const{ cout << "长方形:" << endl; cout << "长方形的长、宽: " << x << y << endl; cout << "长方形的面积:" << x * y << endl; } }; int main(){ Shape *p; char flag = 'Y'; while(toupper(flag) == 'Y'){ int select; cout << "请选择需要输入的类型:1(圆), 2(正方形), 3(长方形)" << endl; cin >> select; switch(select){ case 1: double r; cin >> r; p = new Circle(r); p->show(); delete p; break; case 2: double x; cin >> x; p = new Rectanglez(x); p->show(); delete p; break; case 3: double x1, y; cin >> x1 >> y; p = new Rectanglec(x1, y); p->show(); delete p; break; default: cout << "输入错误!" << endl; break; } cout << "是否继续输入:N or Y ?" << endl; cin >> flag; } return 0; }
错误处理1: D:\a1-C++\C++作业\第五次1.cpp undefined reference to `vtable for Shape'的更多相关文章
- Qt - 错误总结 - 在自定义类头文件中添加Q_OBJECT 编译时报错(undefined reference to ‘vtable for xxThread)
错误提示:在添加的QThread子类头文件添加Q_OBJECT时,编译程序,出现"undefined reference to 'vtable for xxThread'"错误提示 ...
- Qt错误:类中使用Q_OBJECT宏导致undefined reference to vtable for "xxx::xxx"错误的原因和解决方法
在进行Qt编程的时候,有时候会将类的定义和实现都写在源文件中,如果同时在该类中使用信号/槽,那么可能就会遇到 undefined reference to vtable for "xxx:: ...
- Qt的“undefined reference to `vtable for”错误解决(手动解决,加深理解)
使用QT编程时,当用户自定义了一个类,只要类中使用了信号或槽. Code::Blocks编译就会报错(undefined reference to `vtable for). Google上有很多这个 ...
- [ c++] cmake 编译时 undefined reference to `std::cout' 错误的解决方案
cmake .. 和 make 之后,出现如下错误 Linking CXX executable ../../../bin/ModuleTest CMakeFiles/ModuleTest.dir/ ...
- 解决undefined reference to `__poll_chk@GLIBC_2.16' 错误
出现这个错误,是系统的glibc版本太低了,需要更新 到http://ftp.gnu.org/gnu/glibc/下载新版本的glibc,也不用太高,我选择glibc-2.20.tar.gz 解压 ...
- Android APP使用NDK编译后的ffmpeg库出现undefined reference to 'posix_memalign'错误
在android程序中使用NDK编译后的ffmpeg库的时候出现了如下错误: jni/libs/libavutil.a(mem.o): in function av_malloc:libavutil/ ...
- 解决qt程序的链接阶段出现 undefined reference 错误
错误的原因是我使用到了 QT Widgets 模块中的东西,但是makefile的链接的参数中没有 widgets.其实官网上提到了这个: http://doc.qt.io/qt-5/qtwidget ...
- 错误 undefined reference to __cxa_guard_acquire/release
用gcc编译 c++ 程序时,出现错误 undefined reference to __cxa_guard_acquire linker error, 但是用icc可以正常编译, 问题出在stati ...
- 关于“undefined reference to”错误
哪些问题可能产生undefined reference to错误? 1.没用生成目标文件 比如说hello.o文件,由于名字写错.路径不对.Makefile缺少. 2.没用添加相应的库文件.so/dl ...
随机推荐
- hadoop、Storm该选哪一个
如果hadoop.Storm还感觉混要,那么此篇文章将帮助你把他们完全区分 可以带着下面问题来阅读本文章: 1.hadoop.Storm各是什么运算 2.Storm为什么被称之为流式计算系统 3.ha ...
- .net 读取实体属性和描述注释
.net 读取实体属性和描述注释 class Program { static void Main(string[] args) { TEST test = new TEST(); test.MyNa ...
- 0-创建scott示例数据
CREATE TABLE dept ( deptno INT PRIMARY KEY, dname VARCHAR(14), loc VARCHAR(13) ); INSERT INTO d ...
- CentOS下安装JDK的三种方法
方法一:手动解压JDK的压缩包,然后设置环境变量 1.在/usr/目录下创建java目录 [root@localhost ~]# mkdir/usr/java[root@localhost ~]# c ...
- C语言之函数和字符串
二.函数: 2.1.函数的执行: 1.当我们每次进入一个函数的时候,原函数的栈底进行一个备份,之后将当前函数的栈底和栈顶指针分作同一个. 2.此时我们就可以说产生了一个新栈,产生新栈之后会在新栈中申请 ...
- 解析http协议的url
package util; import java.io.BufferedReader;import java.io.InputStream;import java.io.InputStreamRea ...
- 简单XSS跨站脚本攻击实验
原理:恶意Web用户将代码植入到提供给其它用户使用的页面中,如果程序没有经过过滤或者过滤敏感字符不严密就直接输出或者写入数据库.合法用户在访问这些页面的时候,程序将数据库里面的信息输出,这些恶意代码就 ...
- HTML+CSS--position大法好
其实在HTML和CSS的学习中,css的position属性应该是难点之一,难在你需要静下心来仔细搞清楚它的每一个值的意义.效果和用法.但是它的功能很强大,效果也是很令人惊艳的,因为你可以用它去实现一 ...
- 关于“foreach循环”中遇到的几个问题总结
1.列表页面用"foreach循环"的时候数据没有显示,此时需要检查你对象模型中属性的首字母是否大写,切记不能大写(本人在做一个项目的时候,对象模型是别人建立的,属性首字母大写了, ...
- Hopfield神经网络实现污染字体的识别
这个网络的内部使用的是hebb学习规则 贴上两段代码: package geym.nn.hopfiled; import java.util.Arrays; import org.neuroph.co ...