0
#include <iostream>
#define _USE_MATH_DEFINES
#include <math.h>

using namespace std;

//the volume and surface area of sphere

struct sphere_t { float radius; }; 
sphere_t sph; 
sph.radius = 3; // this is the part that mess me up, error in sph.radius

double SphereSurfaceArea(const sphere_t &sph)
{
    return 4*M_PI*sph.radius*sph.radius; 
}

double SphereVolume(const sphere_t &sph)
{
    return 4.0/3.0*M_PI*sph.radius*sph.radius*sph.radius;
}

int main()
{

    cout << "Sphere's description: " << sph.radius << endl;
    cout << "Surface Area: " << SphereSurfaceArea(sph) << endl; 
    cout << "Volume :" <<SphereVolume(sph) << endl;

    system("pause");
    return(0);
}

我得到的输出是:

固体的描述 表面积 体积

如何通过常量引用将数字放入 const 函数并将函数设置为 void 而不返回任何内容?

4

2 回答 2

2

您可以将初始化与全局变量的定义合并为一行:

sphere_t sph = { 3 }; 
于 2013-04-03T22:07:08.970 回答
2

这个

sph.radius = 3;

是一个赋值语句,它将值 3 赋给 sph.radius。C++ 的一条规则是赋值语句只能放在函数中。您已经在函数之外编写了一个。

我会这样写你的代码

int main()
{
    sphere_t sph; 
    sph.radius = 3;

    cout << "Sphere's description: " << sph.radius << endl; 
    cout << "Surface Area: " << SphereSurfaceArea(sph) << endl; 
    cout << "Volume :" << SphereVolume(sph) << endl;

    system("pause");
    return(0);
}

现在赋值(和 sph 的声明)在函数 main 中。

于 2013-04-03T22:07:29.090 回答