继续失踪“;”在“。”之前错误

时间:2013-05-23 20:25:57

标签: c++

我在这里有一个类的标题规范:

#ifndef FIXEDWINGAIRCRAFT_H
#define FIXEDWINGAIRCRAFT_H

#include <iostream>

class FixedWingAircraft
{
  private:
    struct Airframe
    {
        double weight;
    };
    struct Engine
    {
        double weight;
    double fuel;
    };
    struct Radio
    {
        bool state;
    double weight;
    };
    struct Pilot
    {
        int proficiency;
    double weight;
    };
    public:
    void setAirframe(double w)
    {
        Airframe.weight = w;
    }
    void setEngine(double w, double f)
    {
        Engine.weight = w;
    Engine.fuel = f;
    }
    void setRadio(bool s, double w)
    {
        Radio.state = s;
    Radio.weight = w;
    }
    void setPilot(int p, double w)
    {
        Pilot.proficiency = p;
    Pilot.weight = w;
    }
};
#endif

但是当我尝试编译时,我遇到了大量的语法错误:

error C2143: syntax error : missing ';' before '.'

我假设这些引用了setter函数,但我不明白为什么会引起问题。我错过了什么?

2 个答案:

答案 0 :(得分:12)

Airframe.weight = w;和所有类似的其他人都是非法的。 Airframe是一个类,而不是一个对象。您可能希望将该类型的对象作为成员并设置其属性。

你可以替换

struct Airframe
{
    double weight;
};

struct Airframe
{
    double weight;
} airframe;

这会在FixedWingAircraft中为您提供该类型的成员,您可以使用airframe访问该成员。

答案 1 :(得分:4)

Airframe, Raid, Pilot, Enginestruct类型,您应该使用它们的实例/对象来访问其成员。例如:

Airframe a;
a.weight  = w;