gpt4 book ai didi

C++ "Function"未在此范围内声明

转载 作者:行者123 更新时间:2023-11-30 02:56:47 25 4
gpt4 key购买 nike

我在类里面被分配到:

Write a program that creates and manages arrays by the use of pointers. Your main program should interact with pointers/arrays only through various functions. These functions will then limit the use of array to their proper handling. For example these functions will eliminate the possibility of overstepping the boundaries of an array.

到目前为止,我已经编写了程序并修复了大部分错误,但是无论我尝试什么,我都会不断收到“未在此范围内声明的函数”错误。该程序包括以下文件:main.cpp MyArray.cppMyArray.h

main.cpp

#include <iostream>
#include "MyArray.h"

using namespace std;

int main(int argc, char * argv[]) {
int *Array1, *Array2;
int Array1Size(10), Array2Size(10);
int Array1Value(0), Array2Value(0);

cout << "Enter Size and Initial value for Array1: ";

cin >> Array1Size >> Array1Value;

cout << "Enter Size and Initial value for Array2: ";

cin >> Array2Size >> Array2Value;

CreateArray(Array1, Array1Size);
InitArray(Array1, Array1Size, Array1Value);

CreateArray(Array2, Array2Size);
InitArray(Array2, Array2Size, Array2Value);

cout << "Printing Array1:" << endl;
PrintArray(Array1, Array1Size);
cout << endl;
cout << "Printing Array2:" << endl;
PrintArray(Array2, Array2Size);
cout << endl;

if(CopyArray(Array1, Array1Size, Array2, Array2Size)) {
cout << "Copy was successful" << endl;
} else {
cout << "Copy was not successful" << endl;
}

cout << "Printing Array1:" << endl;

PrintArray(Array1, Array1Size);

cout << endl;

EnterArray(Array1, Array1Size);

// MergeArray(Array1, Array1Size, Array2, Array2Size);

cout << "Printing Array1:" << endl;
PrintArray(Array1, Array1Size);

cout << endl;

return 0;
}

MyArray.h

#ifndef _MyArray_h_included_
#define _MyArray_h_included_

class MyArray
{
public:
void CreateArray(int *array, int size);
/*
CreateArray(int *array, int size): Will accept a pointer to an array, and the size of the array and will allocate the appropriate amount of memory for the array
*/
void InitArray(int *array, int size, int value);
/*
InitArray(Array1, Array1Size, Array1Value): Will initialize the contents of the arry Array1 to the value Array1Value
*/
void PrintArray(int *array, int size);
/*
PrintArray(Array1, Array1Size): Will print the contest of the Array1
*/
bool CopyArray(int *arrayOne, int sizeOne, int *arrayTwo, int sizeTwo);
/*
CopyArray(Array1, Arrary1Size, Array2, Array2Size): Will copy the contents of Array2 to Array1 iff the two arrays are of equal size. If the copying process is successfully completed, then a value of 1 is returned, otherwise a value of 0 is returned.
*/
void EnterArray(int *array, int size);
/*
EnterArray(Array1, Array1Size): Will populate the Array1 from the stdin by prompting the user to enter all elements of the array.
*/
};
#endif

MyArray.cpp

#include <iostream>
#include "MyArray.h"

using namespace std;

void MyArray::CreateArray(int *array, int size) {
array = new int[size];
}

/*
CreateArray(int *array, int size): Will accept a pointer to an array, and the size of the array and will allocate the appropriate amount of memory for the array
*/
void MyArray::InitArray(int *array, int size, int value) {
for(int index(0); index < size; index++) {
array[index] = value;
}
}

/*
InitArray(Array1, Array1Size, Array1Value): Will initialize the contents of the arry Array1 to the value Array1Value
*/
void MyArray::PrintArray(int *array, int size) {
for(int index(0); index < size; index++) {
cout << "Value of index: " << index << " is " << array[index] << endl;
}
}

/*
PrintArray(Array1, Array1Size): Will print the contest of the Array1
*/
bool MyArray::CopyArray(int *arrayOne, int sizeOne, int *arrayTwo, int sizeTwo) {
if(sizeOne != sizeTwo) {
return false;
} else {
for(int index(0); index < sizeTwo; index++) {
arrayOne[index] = arrayTwo[index];
}

return true;
}
}

/*
CopyArray(Array1, Arrary1Size, Array2, Array2Size): Will copy the contents of Array2 to Array1 iff the two arrays are of equal size. If the copying process is successfully completed, then a value of 1 is returned, otherwise a value of 0 is returned.
*/
void MyArray::EnterArray(int *array, int size){
int index(0);

while(index < size) {
int value(0);
cout << "Enter the value for index: " << index + 1 << endl;
cin >> value;
array[index] = value;
}
}
/*
EnterArray(Array1, Array1Size): Will populate the Array1 from the stdin by prompting the user to enter all elements of the array.
*/

我得到的错误类似于:main.cpp:'LineNumber': error。 'MyArray.cpp 中的每个函数' 未在此范围内声明(我会复制粘贴确切的错误,但我无法从我用来连接到远程主机的终端复制粘贴我编译我的代码)


几个小时以来,我一直在尝试解决这个问题,但我无法弄清楚,我什至查看了其他 Stack 帖子,例如 'foo' was not declared in this scope c++
非常感谢任何帮助,谢谢。

我也没有写main.cpp,它是随作业给的。

最佳答案

在 C++ 中,类 A 的函数 foo 可以被 A.foo()A_ptr-> 调用foo(),只是一个 foo() 是行不通的。

我认为你在这里不需要类,只需使用免费功能即可。

如果您确实想使用 MyArray 类,则无需在 main.cpp 中编写 int *Array1, *Array2; 并将其作为参数传递。最好将数组存储在 MyArray 类中。

就像这样。

主要.cpp

#include <iostream>
#include "MyArray.h"

using namespace std;

int main(int argc, char * argv[]) {
//int *Array1, *Array2;
MyArray Array1;

int Array1Size(10);
int Array1Value(0);

cout << "Enter Size and Initial value for Array1: ";

cin >> Array1Size >> Array1Value;

Array1.CreateArray(Array1Size);
Array1.InitArray(Array1Size, Array1Value);

cout << "Printing Array1:" << endl;
Array1.PrintArray(Array1Size);
cout << endl;

return 0;
}

MyArray.h

#ifndef _MyArray_h_included_
#define _MyArray_h_included_

class MyArray
{
public:
void CreateArray(int size);

void InitArray(int size, int value);

void PrintArray(int size);

private:
int *m_array;

};
#endif

MyArray.cpp

#include <iostream>
#include "MyArray.h"

using namespace std;

void MyArray::CreateArray(int size) {
m_array = new int[size];
}


void MyArray::InitArray(int size, int value) {
for(int index(0); index < size; index++) {
m_array[index] = value;
}
}


void MyArray::PrintArray(int size) {
for(int index(0); index < size; index++) {
cout << "Value of index: " << index << " is " << m_array[index] << endl;
}
}

我忽略了您的解决方案中的一些函数以及析构函数,您应该在其中使用 delete[]

关于C++ "Function"未在此范围内声明,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15217338/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com