指针,动态变量,C ++

时间:2015-10-13 18:24:01

标签: c++ variables pointers dynamic

Errors 运行此程序时,我一直收到错误。这些错误意味着什么?附上截图。 这就是问题所在:

具有两个私有变量成员的类Area;字符串类型的单位和float类型的area_value。

1)从键盘输入area_value及其单位。计算该区域的一半和四分之一,并以单位显示结果。 2)最后销毁动态变量。

#include <iostream
#include <string>
using namespace std;


class Area
{
    public:
    Area();
    void setu(string a);
    void seta(float b);
    string getu();
    float geta();
private:
    string unit;
    float area_value;
};

int main()
{

Area *p = new Area();
string a;
float f;
cout << "Enter a unit with no space: ";
getline(cin, a);
p->setu(a);
cout << "Enter a value of area: ";
cin >> f;
p->seta(f);
cout << "A half of your input = " << f / 2 << endl;
cout << "A quarter of your input = " << f / 4 << endl; 
delete p;
return 0;
}

3 个答案:

答案 0 :(得分:1)

看起来像

  1. 您尚未实施会员功能,或
  2. 您已在单独的文件中实现了成员函数,但忘记将其包含在构建可执行文件中。

答案 1 :(得分:1)

您似乎忘了实现构造函数Area()和Area类的方法。

答案 2 :(得分:0)

第一个包含缺少大于号(&gt;)。公共Area类仅定义函数,而不是实现它们。变量p被定义为指针。

您还可以添加一半和四分之一作为功能。我稍微修改了它,所以用clang ++ -Wall -std = c ++ 11 -o area area.cpp编译。

#include <iostream>
#include <string>

using namespace std;

class Area {
public:
    Area() {};
    ~Area() {};
    void setu(string u) { unit = u; }
    void seta(float a) { area_value = a; }
    string getu() { return unit; }
    float geta() { return area_value; }
    float getHalf() { return area_value / 2; }
    float getQuarter() { return area_value / 4; }
private:
    string unit;
    float area_value;
};

int main() {
    Area p {};
    string a;
    float f;
    cout << "Enter a unit with no space: ";
    getline(cin, a);
    p.setu(a);
    cout << "Enter a value of area: ";
    cin >> f;
    p.seta(f);
    cout << "A half of your input = " << p.getHalf() << endl;
    cout << "A quarter of your input = " << p.getQuarter() << endl; 
    return 0;
}