好的,所以我的.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 :(得分: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