各位大哥大姐帮忙看看错误 为什么就是不能得出结果呢?
quad.h
#ifndef _QUADRANGLE_H_
#define _QUADRANGLE_H_
#include<iostream>
#include<string>
using namespace std;
class Quadrangle
{
public:
string name; //图形标志
};
typedef Quadrangle *QUADPTR;
#endif
para.h
#ifndef _PARA_H_//平行四边形
#define _PARA_H_
using namespace std;
#include<string>
//#include"quad.h"
class Parallelogram
{
public:
string name;//形体的标识
Parallelogram (int l , int h);
~Parallelogram();
string what();
double area();
void draw ();
private:
int length,height;//长和高
};
#endif
list.h
#ifndef _LIST_H_
#define _LIST_H_
#include<iostream>
using namespace std;
#include<string>
#include"quad.h"
typedef void (*ACCESSFUN)(QUADPTR); //定义遍历时节点处理函数类型
struct Node
{
QUADPTR data;
struct Node *next;
} ;
class List
{
private:
Node *head, *tail;
public:
List();
List(const List& l);
~List();
void push_back(const QUADPTR quad); //尾部添加
void traverse(ACCESSFUN f); //遍历
};
#endif
源文件
quad.cpp
#ifndef _QUADRANGLE_H_//
#define _QUADRANGLE_H_
#include<iostream>
#include<string>
using namespace std;
class Quadrangle
{
public:
string name; //
};
typedef Quadrangle *QUADPTR;
#endif
list.cpp
#include <iostream>//遍历和存储
#include <string>
using namespace std;
#include"quad.h"
#include "list.h"
List::List() : head(NULL), tail(NULL) {}
List::List(const List& l) : head(l.head ), tail(l.tail ) {}
List::~List()
{
Node *p = head, *q;
while (p != NULL)
{
q = p;
p = p->next;
delete q;
}
}//insert element into the tail of list
void List::push_back(const QUADPTR quad)
{ Node* newa;
newa = new Node;/*if(head == tail){ newa->data = quad;head = newa;newa->next = NULL;tail =head->next;*/
newa->data=quad;
newa->next=NULL;
if(tail==NULL){
head=newa;
tail=newa;
tail->next = NULL;
}
else
{ tail->next = newa;
tail=newa;
tail->next =NULL;
}//在链表尾部增加一个节点
}
void List::traverse(ACCESSFUN f)//遍历
{
Node *p = head;
while (p != NULL)
{
f(p->data);
p = p->next;
}
}
para.cpp
#include<iostream>//平行四边形
#include"para.h"
#include<string>
using namespace std;
Parallelogram:: Parallelogram(int l, int h) : name(" parallelogram"), length(l), height(h) {}
Parallelogram::~ Parallelogram() {}
string Parallelogram::what(){
return name;
}
void Parallelogram::draw(){
cout << what() <<": length = " <<length << ", height = " << height<<endl;
}
double Parallelogram::area(){
double s;
s =length*height;
return s;
}
main.cpp
#include <iostream>
#include <string>
#include "quad.h"
//#include "rect.h"
#include "list.h"
//#include "dioa.h"
#include "para.h"
//#include "trap.h"
//#include "squr.h"
using namespace std;
void access(QUADPTR quad)
{
/*if (quad->name == "rectangle")
{
Rectangle *p = reinterpret_cast <Rectangle *> (quad);
p->draw();
cout << "area = " << p->area() << endl;
}*/
/*if (quad->name == "square")
{
Square *p = reinterpret_cast<Square *>(quad);
p->draw();
cout << "area = " << p->area() << endl;
}*/
if (quad->name == "parallelogram")
{
Parallelogram *p = reinterpret_cast<Parallelogram *>(quad);
p->draw();
cout << "area = " << p->area() << endl;
}
/*if (quad->name == "trapezoid")
{
Trapezoid *p = reinterpret_cast<Trapezoid *>(quad);
p->draw();
cout << "area = " << p->area() << endl;
}*/
/* if(quad->name == "diamond")
{
Diamond *p = reinterpret_cast<Diamond *>(quad);
p->draw();
cout << "area = " << p->area() << endl;
}*/
}
int main()
{
// Rectangle rect (5,7);
//Square squr(5);
Parallelogram para(7,8);
//Trapezoid trap(2,4,6);
//Diamond dioa(4,5);//五种形体不同的对象
List list;
//list.push_back(reinterpret_cast<QUADPTR>(&rect));
//list.push_back(reinterpret_cast<QUADPTR>(&squr));
list.push_back(reinterpret_cast<QUADPTR>(¶));
//list.push_back(reinterpret_cast<QUADPTR>(&trap));
//list.push_back(reinterpret_cast<QUADPTR>(&dioa));
list.traverse(access);
运行后没有结果
想得到结果是 Parallelogram :length=7,height=8;
area=28
是怎么回事呢?
相关推荐
电信运营基于分类模型的客户流失预警系统:数据挖掘驱动的精准挽留策略设计
内容概要:本文围绕电信客户流失预警与挽留策略,构建了一套从数据探索、预处理、特征工程、分类建模、模型评估与解释到业务落地的端到端数据挖掘实战方案。基于公开的 Telco Customer Churn 数据集,项目聚焦于识别高流失风险客户,并通过逻辑回归、随机森林和XGBoost等模型进行对比分析,结合ROC-AUC、精确率、召回率、F1等指标评估性能,利用SHAP等方法实现模型可解释性,最终将预测结果转化为可操作的客户分层与差异化挽留策略。文中强调了数据泄漏防范、类别不平衡处理、模型可复现性及A/B测试验证增量收益的重要性,并明确指出当前图表为示意性质,需通过附录代码运行真实数据生成结果。; 适合人群:具备一定数据分析与机器学习基础,从事数据科学、用户运营或客户留存相关工作的从业者,尤其是工作1-3年希望提升实战能力的研发与分析人员。; 使用场景及目标:①掌握客户流失预测的全流程方法论,包括数据清洗、特征工程、建模调参与模型解释;②学习如何将机器学习模型输出转化为可运营的客户触达策略;③理解模型评估与业务目标之间的衔接,如预算约束下的优先级排序与A/B测试设计; 阅读建议:此资源以实际业务场景驱动,不仅关注算法实现,更重视从业务定义到策略落地的闭环逻辑。建议结合附录提供的完整Python代码,在本地环境中下载数据集并复现分析流程,重点关注数据预处理防泄漏机制、模型管道构建、超参数调优策略及SHAP解释应用,避免将文中的示意图表误认为实测结果。
旋转高频信号注入法在PMSM零低速无位置控制中的仿真研究(Matlab代码实现)
内容概要:本文系统研究了旋转高频信号注入法在永磁同步电机(PMSM)零低速无位置传感器控制中的应用,并提供了基于Matlab/Simulink的完整仿真代码实现。针对PMSM在启动及低速运行时反电动势微弱导致传统观测器失效的问题,该方法通过在定子绕组中注入高频旋转电压信号,利用电机自身凸极效应产生的响应电流特征,实现对转子位置的高精度在线估计。文中详细阐述了该技术的理论基础、数学建模过程、仿真系统架构设计以及关键参数整定方法,全面验证了其在零速和低速工况下对转子初始位置辨识与动态跟踪的准确性、有效性及强鲁棒性。; 适合人群:具备电机控制理论基础知识和Matlab/Simulink仿真能力的电气工程、自动化、电力电子等相关专业的硕士研究生、博士研究生、科研人员以及从事高性能电机驱动系统研发的工程师。; 使用场景及目标:① 深入理解高频信号注入类无位置传感器控制技术的工作原理、信号处理机制与工程实现细节;② 掌握利用Matlab/Simulink搭建PMSM高性能矢量控制系统及高级观测器的仿真方法;③ 为开发高精度、低成本、全速度范围适用的PMSM无位置传感器驱动器提供坚实的理论依据和技术验证平台。; 阅读建议:建议读者结合文中详尽的理论推导与所提供的仿真代码进行对照学习,亲自动手运行、调试仿真模型,通过改变负载、转速、注入信号参数等工况,观察系统响应与控制效果的变化,从而深刻掌握旋转高频注入法的内在工作机制与设计要点。
Python小Demo实例源码爬取网易云音乐评论
Python小Demo实例源码爬取网易云音乐评论
Python3 finally执行铁律
finally代码块无论try内部是否报错、是否执行return,都会强制执行。唯一例外:调用os._exit()直接终止解释器,跳过finally。业务场景:数据库连接、网络套接字、文件句柄回收,放入finally保证资源释放。特殊细节:try内部return不会立刻返回,会先执行finally内部代码,再返回结果。新手易错:在finally内部写入return,会覆盖try原有返回值,导致业务数据异常,严禁在finally使用return语句。 tiyu.xastone.com www.yingjie168.com 17kuaibu.com www.0760yx.net 1900kk.com
基于线性时变MPC的无人驾驶车辆双移线轨迹跟踪仿真研究(Matlab代码、Simulink仿真实现)
基于线性时变MPC的无人驾驶车辆双移线轨迹跟踪仿真研究(Matlab代码、Simulink仿真实现)


新手乐园
