图像处理程序头文件被重复定义问题~~q求解答

图像处理程序头文件被重复定义问题~~q求解答,第1张

我想问一下,你的上面的类定义是在头文件中的吗?

我猜你出现问题是在编译的时候没有保存,在运行连接的时候报出的重定义错误,而且你的类定义是在名为image.h的头文件中定义的,在多个配李*.cpp中包含了该头文件。

(#ifndef…#define…#endif 这个的用法其实跟楼上说的#program once 差不多,都是问了防止重定义而设定的,但是两者之间还是有一些区别。具体的区别你可以从网上看一下。)

编译过程分为编译和链接

编译之前有一个预处理

编译的最小单位是单个文件

也就说预处理的最小单位也是单个文件

如果定义了头文件test.h

#ifndef _TEST_H

#define _TEST_H

int a

int b

int c

#endif

假设工程中有 a.cpp b.cpp两个文件 都包含了test.h

那么对a编译的时候, test只包含一次 生成的 a.o 中包含了 a_s32 b_s32(即你定义的变量)

对b编译的时候同样会包含globle.h 而且只包含一次

所谓只包含一次 是在单个cpp文件中只包含一次

这样在object中就会有多个相同命名的变量被包含进去

链接的培或迟时候就会出错

出错不会出现在编译过程中的

一般的做法是,在cpp文件中定义变量,然后在头文件中用extern 声明变量,这样在其他cpp文件中再包含头文件就团州可以。

你可以试试,只是我从你给出来的东西的猜测

其实挺简单的,注意我写的注释!

<%@ page contentType="text/htmlcharset=GB2312" %>

<%@ page import="org.jfree.chart.JFreeChart,org.jfree.chart.ChartUtilities,

org.jfree.chart.ChartFactory,

org.jfree.chart.plot.PlotOrientation,

org.jfree.data.category.DefaultCategoryDataset"%> //上面是需要添加的头文件

<html>

<body>

<%

String dataName[]=new String[]{"0-30岁","30-50岁","50-70岁","70岁以上"}//显示数据系列

int dataValueCount[]={4,5,4,6}//数据系列对应的值

//以上两行可以从数据库里去取值,用循环写入数组

//------创建数据集,并设置值------

DefaultCategoryDataset categoryDataset = newDefaultCategoryDataset()//这个表示柱状图

for(int i=0i<dataName.lengthi++)

categoryDataset.addValue(dataValueCount[i],dataName[i],dataName[i])//循环写入数据集

String titleString="用户年龄阶段分布统计图"//图的标题

JFreeChart chart = ChartFactory.createBarChart(titleString,"用户年龄阶段","数量",

categoryDataset,PlotOrientation.VERTICAL,true,true,false)//chart就是欲创建的图表

ChartUtilities.writeChartAsJPEG(response.getOutputStream(),chart,500,300)//这行的意思是输出成一个JPEG形式的文件显示

%>

</body>

</html>

其实后面还有很多参数卖镇的,比如颜色,柱子的标题等等,太多属性了,这个你查看一下JFREECHART的文档就行了,比如下面这样,很容易吧。

Font labelFont = new Font("SansSerif", Font.TRUETYPE_FONT, 12)

/*

* VALUE_TEXT_ANTIALIAS_OFF表示将文字的抗锯齿关橘雹闭,

* 使用的关闭抗锯齿后,字体尽量选择12到14号的宋体字,这样文字最清晰好看

*/

// chart.getRenderingHints().put(RenderingHints.KEY_TEXT_ANTIALIASING,RenderingHints.VALUE_TEXT_ANTIALIAS_OFF)

chart.setTextAntiAlias(false)

chart.setBackgroundPaint(Color.white)

// create plot

CategoryPlot plot = chart.getCategoryPlot()

// 设置横虚线可见

plot.setRangeGridlinesVisible(true)

// 虚线色彩

plot.setRangeGridlinePaint(Color.gray)

// 数据轴精度

NumberAxis vn = (NumberAxis) plot.getRangeAxis()

// vn.setAutoRangeIncludesZero(true)

DecimalFormat df = new DecimalFormat("#0.00")

vn.setNumberFormatOverride(df)// 数据轴数据标签的显示格式中伍粗

// x轴设置

CategoryAxis domainAxis = plot.getDomainAxis()

domainAxis.setLabelFont(labelFont)// 轴标题

domainAxis.setTickLabelFont(labelFont)// 轴数值

属性比较多,不可能全贴出来,也不必全用,设置一些实用的属性即可。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/tougao/12222792.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-21
下一篇 2023-05-21

发表评论

登录后才能评论

评论列表(0条)

保存