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 でゼロを取得しています。

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が言及しているように、1/2にはfloatを使用するか、単に使用する必要があります

_base * _height / 2.0
于 2013-11-11T02:44:25.147 に答える