注册 登录
编程论坛 C++教室

求助C++的语法!

知白守黑 发布于 2016-12-20 10:48, 1958 次点击
#include<iostream>
using namespace std;
class A
{
public:
    int h[]={2,1,5,3,4};
    void sf(int a[],int n)
    {
    int i,j;
    int temp;
    for( i=1;i<n;i++)
    {
    int j=i;
    int temp=a[i];
    while(j>0 &&temp<a[j-1]){
    a[j]=a[j-1];
    j--;
    }
    a[j]=temp;
    for(int k=0;k<n;k++)
        cout<<a[k]<<" ";
    cout<<endl;
    }
}

};
void main()
{
    A::sf(h,5);
}


E:\C++\09.cpp(6) : error C2059: syntax error : '{'
E:\C++\09.cpp(6) : error C2334: unexpected token(s) preceding '{'; skipping apparent function body
请问这是什么问题,,为什么定义数组是语法错误的??
3 回复
#2
鸿蒙之灵2016-12-20 20:26
回复 楼主 知白守黑
我就先在你的源代码里面指出你的问题,然后再告诉你如何修改:



程序代码:

#include<iostream>
using namespace std;
class A
{
public:
    int h[]={2,1,5,3,4};        //这里,你的数组是算什么,你在主函数中将该数组作为参数,有传递,定义在这里会导致大括号不匹配的报错
    void sf(int a[],int n)
    {
    int i,j;
    int temp;
    for( i=1;i<n;i++)
    {
    int j=i;
    int temp=a[i];
    while(j>0 &&temp<a[j-1]){
    a[j]=a[j-1];
    j--;
    }
    a[j]=temp;
    for(int k=0;k<n;k++)
        cout<<a[k]<<" ";
    cout<<endl;
    }
}

};
void main()
{
    A::sf(h,5);      //出现了非静态成员的非法调用,应该先声明一个类的实例,由实例去调用成员方法,这里你好好琢磨一下
}




下面是我在你的代码基础上修改的:



程序代码:
#include "stdafx.h"
#include <stdlib.h>
#include<iostream>
using namespace std;

class A
{
public:
   
    void sf(int a[],int n)
    {
       int i,j;
       int temp;
       for( i=1;i<n;i++)
       {
          int j=i;
          int temp=a[i];
          while(j>0 &&temp<a[j-1])
          {
             a[j]=a[j-1];
             j--;
          }
          a[j]=temp;
          for(int k=0;k<n;k++)
              cout<<a[k]<<" ";
          cout<<endl;
       }
   }
};

int main()
{   
    int h[]={2,1,5,3,4};
    A a;
    a.sf(h,5);
    system("pause");
    return 0;
}
#3
鸿蒙之灵2016-12-20 20:27
回复 楼主 知白守黑
还有一个编程习惯的问题,忘了说了,主函数哪来的void类型,这个你下去了好好了解一下标准
#4
知白守黑2016-12-21 21:42
回复 3楼 鸿蒙之灵
好的,万分感谢
1