C++程序错误

Jul*_*lle 1 c++

我无法解决3个错误.程序实现是正确的,但不知道如何摆脱3个错误

# include <iostream.h>
# include < conio.h>
void main() {
    class coord {
        float x;
        float y;
        //Constructor
        coord(float init_x,float init_y) {
            x= init_x;
            y= init_y;
        }
        void set(float f1, float f2) {
            x = f1;
            y = f2;
        }
        float get_x() {return x;}
        float get_y() {return y;}
        virtual void plot() {
            cout<<x;
            cout<<y;
        };
        class 3d_coord: public coord {
            float z;
            //constructor
            3d_coord(float init_x,float init_y,float init_z): coord(init_x,init_y) {
                z= init_z;
            }
            void set(float f1,float f2,float f3) {
                coord::set(f1, f2); z = f3;
            }
            float get_z() {  return z; }

            virtual void plot() { 
                coord::plot();
                cout<<z;
            };

            int test
            void *ptr;

            cin>>test;
            coord a(1.1, 2.2);
            3d_coord b(3.0, 4.0, 5.0);
            if (test)
                ptr = &a;
            else
                    ptr = &b;
            ptr-> plot();
        }
    }
Run Code Online (Sandbox Code Playgroud)

Jam*_*lis 6

我发现至少有三个错误:

  1. 标准库标题<iostream>不是<iostream.h>. <conio.h>不是C++标准库头,最好避免使用.

  2. main()必须回来int,而不是void.

  3. 标准库名称(例如cout)位于std命名空间中; 你需要对它们进行鉴定.

既然你没有说你想要解决哪些错误,我不知道这些是不是,但它们仍然是三个错误.以防万一,这里有一些奖励错误:

  • 3d_coord不是有效的类名; 类名必须是标识符,这意味着它必须以字母或下划线开头,而不是数字.

  • 你不应该使用继承来关联coord3d_coord(或者你固定的奖励错误号1后你选择命名它).三维坐标不是二维坐标,即使它们共享两个共同的成员.继承应该用于is-a关系.

  • 从流中提取数据(cin在本例中)后,必须进行测试以确保提取成功.

  • ptr属于void*; 你不能通过a调用成员函数void*(很少有人void*在C++程序中使用一个好主意).

  • 这不是一个真正的错误,但通常你没有在函数内部定义类(例如,有例外;仿函数).

  • 我不这么认为,@朱莉娅. (9认同)
  • @Julia:你不会对这种态度走得很远.我们没有报酬来帮助您,我们这样做是因为我们很善良,我们希望您尽可能多地努力解决您自己的问题,就像我们帮助您一样. (8认同)
  • @Ben Voigt:即使你真的不明白Prasoon的意思,也绝对没有人要求屈尊俯就. (6认同)
  • @Julia:如果你先去阅读一本好的C++书然后在这里问你的疑惑/问题会更好. (4认同)