0

好的,所以我的 .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 中得到了 0。

4

1 回答 1

3

您以错误的方式赋值:

更新:

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

至:

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

编辑:

同样正如@WhozCraig 提到的那样,应该使用 float 1/2,或者只是

_base * _height / 2.0
于 2013-11-11T02:44:25.147 回答