数据类型是否正确转换?

时间:2013-11-11 02:41:57

标签: c++ class inheritance polymorphism virtual-method

好的,所以我的.exe给了我零,所以我猜测数据类型没有正确投射。对不起我是c ++的新手,来自c。任何时候我在c中遇到这个问题通常会被截断,但我无法找出我做错了什么。

//shape.h
#ifndef SHAPE_H
#define SHAPE_H
class shape 
{
public:
   shape();
   virtual float area()=0;

};

#endif SHAPE_H


//shape.cpp
#include <iostream>
#include "shape.h"
using namespace std;

shape::shape()
{
}

//triangle.h
#include"shape.h"

class triangle: public shape 
{
public: 
    triangle(float,float);
    virtual float area();
protected:
    float _height;
    float _base;


 };


//triangle.cpp
#include "triangle.h"

triangle::triangle(float base, float height)
{
base=_base;
height=_height;
}
 float triangle::area()
 {
return _base*_height*(1/2);
  }

//main.cpp
#include <iostream>
#include "shape.h"
#include "triangle.h"
using namespace std;

int main()
{

triangle  tri(4,2);


cout<<tri.area()<<endl;


return 0;
}

出于某些原因,当我得到一个4时,我的exe中得零。

1 个答案:

答案 0 :(得分:3)

您以错误的方式分配了值:

更新

triangle::triangle(float base, float height)
{
  base=_base;
  height=_height;
}

为:

triangle::triangle(float base, float height)
{
   _base = base;
   _height = height;
}

编辑:

同样@WhozCraig提到,应该使用float for 1/2,或者只是

_base * _height / 2.0