【问题标题】:c++ declaring arrays as functionsc++ 将数组声明为函数
【发布时间】:2013-10-23 07:57:06
【问题描述】:

我在数组方面遇到了一些问题,因为我有我的 .h 和 .cpp 文件,所以我是否按照我们通常声明函数的规范来声明它们?

pointtwod.h

class PointTwoD
{
    private:
        int xcord,ycord;
        float civIndex;
        LocationData locationdata;

    public:
            PointTwoD();

            PointTwoD(int, int, string, int, int, float, float, float);

        //set/mutator function
        void setxcord(int);
        void setycord(int);

        //get/accessor function
        int getxcord();
        int getycord();

        void storedata(int, int, float);

};

pointtwod.cpp

//declaring array
void PointTwoD::storedata(int xord[], int yord[], float civ[])
{
    int i=0;
    //int size = sizeof(xord)/sizeof(xord[0]);
    int size = 100;
    for(i=0;i<100;i++)
    {
        cout << "key in num for xord: " << endl;
        xord[i] = xcord;
        cout << "key in value for yord: " << endl;
        xord[i] = ycord;
        cout << "key in value for civ: " << endl;
        civ[i] = locationdata.getCivIndex();
    };
}
int main()
{
    PointTwoD pointtwod;
    pointtwod.storedata(xord[], yord[], civ[]);
}

当我编译我得到的错误消息时,即使我输入 int xord[];在我的 PointTwoD.h 文件中:

PointTwoDImp.cpp:99:6: error: prototype for 'void PointTwoD::storedata(int*,int*,float*) does not match any in class 'PointTwoD'

PointTwoD.h:48:8: error: candidate is: void PointTwoD::storedata(int, int, float)

PointTwoDImp.cpp: 135:22: error: 'xord' was not declared in this scope
PointTwoDImp.cpp: 135:27: expected primary-expression before ']' token
PointTwoDImp.cpp: 135:30: error: 'yord' was not declared in this scope
PointTwoDImp.cpp: 135:35: expected primary-expression before ']' token
PointTwoDImp.cpp: 135:38: error: 'civ' was not declared in this scope
PointTwoDImp.cpp: 135:42: expected primary-expression before ']' token

【问题讨论】:

  • 错误信息对我来说看起来很简单。
  • 应该是void storedata(int*, int*, float*);
  • 在 main 中,您没有声明任何名为 xord[]、yord[] 或 civ[] 的内容,因此该范围内不存在此类变量,正如错误消息所述
  • 所以要删除“civ”的错误消息,但未在此范围内声明。我应该放入 float civ[];在我的 pointtwod.h 的私人课程中?

标签: c++ arrays function parallel-arrays


【解决方案1】:
PointTwoDImp.cpp:99:6: error: prototype for 'void PointTwoD::storedata(int*,int*,float*) does not match any in class 'PointTwoD'

这意味着该函数与您在标头中声明的原型不匹配,即:

void storedata(int, int, float);

声明应该是:

void storedata(int*, int*, float*);

或者:

void storedata(int xord[], int yord[], float civ[]);

其余的错误是因为您没有在 main 中声明 xord[], yord[], or civ[],而是将它们传递给函数。

所以你需要在main中声明这三个数组,然后再将它们传递给函数。

【讨论】:

    猜你喜欢
    • 2019-01-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-03-25
    • 1970-01-01
    相关资源
    最近更新 更多