我无法弄清楚C++语法错误"预期`;' 在'{'标记之前

use*_*097 3 c++ syntax constructor

我有这个简单的代码,并收到语法错误:

file.cc:67: error: expected `;' before ‘{’ token
file.cc:73: error: expected primary-expression before ‘(’ token
file.cc:73: error: expected primary-expression before ‘n’
file.cc:73: error: expected `;' before ‘{’ token
Run Code Online (Sandbox Code Playgroud)

我把星星放在67和73的线条周围,它们是班级的构造者.我是C++的新手,无法找到语法问题.这是我第一次制作构造函数.

int main() {

  class Patient {
    private: // default is private but stating explicitly here for learning purposes
        std::string name; //object
        int height; //object
        int weight; //object
    public:
        Patient(); //constructor
        Patient(std::string); //constructor

        void set_name (std::string n) {name=n;} //fn
        void set_height (int h) {if (height>0){height=h;} else {height=0;}} //fn
        void set_weight (int w) {if (weight>0){weight=w;} else {weight=0;}} //fn

        std::string get_name(){return name;} //fn
        int get_height(){return height;} //fn
        int get_weight(){return weight;} //fn

        int bmi(void) {
            if ((height!=0) && (weight!=0))
              return (weight/(height*height));
            else
              return 0;
        }
  };

  Patient::Patient () { // **LINE 67**
    name="string";
    height=0,
    weight=0;
  }

  Patient::Patient(std::string n) {name=n;height=0;weight=0;} // **LINE 73**

  Patient father("Andrew Nonymous");
  Patient mother("Ursula N. Known");
  Patient baby;

  //Father's height and weight are unknown.

  mother.set_name("Ursula N. Nonymous");
  mother.set_height(1.65);
  mother.set_weight(58);

  baby.set_height(0.495);
  baby.set_weight(3.4);

  std::cout << "Baby: " << baby.get_name() << " BMI: " << baby.bmi() << std::endl;
  std::cout << "Mother: " << mother.get_name() << " BMI: " << mother.bmi() << std::endl;
  std::cout << "Father: " << father.get_name() << " BMI: " << father.bmi() << std::endl;

  return 0;
}
Run Code Online (Sandbox Code Playgroud)

Dav*_*vid 6

如果要在函数内定义类,则必须在类定义中内联定义该类的每个方法.例如:

class Patient {
    private: // default is private but stating explicitly here for learning purposes
        std::string name; //object
        int height; //object
        int weight; //object
    public:
        Patient()
        {
             name="string";
             height=0;
             weight=0;
         }
};
Run Code Online (Sandbox Code Playgroud)