c ++ объявляет массивы как функции

Я сталкиваюсь с некоторыми проблемами с массивом, так как у меня есть файлы .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

-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[]);

Остальные ошибки связаны с тем, что вы не объявили xord[], yord[], or civ[] в основном, и вы передаете их функции.

Таким образом, вы должны объявить три массива в main перед передачей их в функцию.

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]