变量需要一个初始化程序c ++?

时间:2017-08-10 02:51:06

标签: c++

如何初始化convert.gram?每当我在课程中声明“克”时,程序都会适当地响应。我试图把克放在构造函数中,但它不起作用。我也正在构建一切正确的吗?谢谢你的帮助!

代码:

#include <stdio.h>
#include <string.h>
#include <iostream>
#include <stdlib.h>
#include <windows.h>
#include "math.h"

using namespace std;

struct grams{
    grams();
    float converter(float pounds);

    float gram;
    float pounds;
    float answer;
    };

    float grams::converter(float pounds){
    answer = pounds * gram;
    return answer;
    }

    grams::grams(){
    float convert.gram = 453.592;
    }

int main(){
    float PtC;
    grams convert;

    cout<<"Pound to Gram Converter \n";
    cout<<"How Many Pounds Do You Want to Convert? \n";

    cin>>PtC;

    float converter = convert.converter(PtC);

    cout<<"Answer = "<<converter<<endl;

return 0;
}

错误:

C:/Users/lisa/Desktop/codelight c++/time_of_for_loop/for_loop_time/for_loop_time/main.cpp:31:13: error: expected initializer before '.' token

1 个答案:

答案 0 :(得分:1)

您需要做的只是设置gram; convertgrams的一个实例,因此其字段将正确设置。

grams::grams(){
    gram = 453.592;
}

但初始化类成员的更常规和高效的方法是使用成员初始化列表,如下所示:

grams::grams() : gram(453.592) {

}

另外,一些建议:因为你使用gram作为常量,将它设置为常量而不是成员更有意义。您可以将其设置为静态成员(并更好地命名)

struct grams {
    static const float GRAMS_PER_POUND = 453.592;
    ...

您根本没有使用会员pound;你应该考虑删除它。存储answer也没有多大意义,因为在convert函数完成后您没有通过converter使用它。