【问题标题】:C++ program errorC++ 程序错误
【发布时间】:2010-10-01 03:22:01
【问题描述】:

我无法解决 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();
        }
    }

【问题讨论】:

  • 请在每行前面放置四个空格来格式化您的代码。如果您选择要格式化的文本,“0101”按钮会自动执行此操作。谢谢!
  • Stack Overflow 社区不是 C++ 编译器。如果您的 C++ 编译器给您错误,您应该指出这些错误是什么(请提供准确的文本!)以及编译器在源代码中指出错误的确切位置。
  • 我收到以下错误:

标签: c++


【解决方案1】:

我可以发现至少三个错误:

  1. 标准库头是&lt;iostream&gt;,而不是&lt;iostream.h&gt;&lt;conio.h&gt; 不是 C++ 标准库头文件,最好避免使用。

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

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

由于您没有说要解决哪些错误,我不知道这些是否是它们,但它们仍然是三个错误。以防万一,这里有一些额外的错误:

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

  • 您不应该使用继承来关联coord3d_coord(或在您修复奖励错误编号 1 后选择的任何名称)。三维坐标不是二维坐标,即使它们共享两个共同的成员。 is-a 关系应使用继承。

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

  • ptr 的类型为 void*;您不能通过 void* 调用成员函数(在 C++ 程序中使用 void* 的情况很少)。

  • 这并不是真正的错误,但通常您不会在函数内部定义类(有例外;例如函子)。

【讨论】:

  • hhi james...你能把正确的代码发给我吗?那应该是 gr8 詹姆斯
  • 如果我将 3d_coord ...替换为其他名称..它会警告我 16 错误
  • @Julia : 如果你先去读一本好的 C++ 书,然后在这里提出你的疑问/问题,那就更好了。
  • @Julia:这种态度不会让你走得太远。我们不是为了帮助您而获得报酬,我们这样做是因为我们很友善,我们希望您像我们帮助您一样努力解决您自己的问题。
  • @Ben Voigt:即使你真的不明白 Prasoon 的意思,也绝对没有必要居高临下。
【解决方案2】:

你没有把类定义放在主函数里面,你也没有把 3d_coord 类放在 coord 类里面。

【讨论】:

  • 我得到的错误:第 28 行 { 预期
  • 第 63 行声明终止错误,第 63 行声明丢失;
【解决方案3】:

我能认出一个:

void *ptr;
...
ptr-> plot(); // void::plot() is not

【讨论】:

    【解决方案4】:
                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();
    

    似乎不是函数...

    【讨论】:

      猜你喜欢
      • 2014-02-25
      • 2021-01-08
      • 2012-04-18
      • 2017-08-02
      • 2011-10-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多