[英]C++ “Function” was not declared in this scope
我在课堂上得到了一个任务:
编写一个程序,通过使用指针创建和管理数组。 您的主程序应该只通过各种函数与指针/数组交互。 然后,这些函数将限制阵列的使用以适当处理。 例如,这些函数将消除超越数组边界的可能性。
到目前为止,我已经编写了程序并修复了大部分错误,但无论我尝试什么,我都会继续获得“未在此范围内声明的函数”错误。 该程序包括以下文件: main.cpp
MyArray.cpp
和MyArray.h
#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;
}
#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
#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. 'Every Function in MyArray.cpp' was not declared in this scope
main.cpp:'LineNumber': error. 'Every Function in MyArray.cpp' was not declared in this scope
(我会复制粘贴确切的错误,但我无法从我用来连接到远程主机的终端复制粘贴,我编译了我的代码)
我一直试图解决这个问题几个小时,我无法弄清楚,我甚至看过其他Stack帖子,如'foo'未在此范围内声明c ++
非常感谢任何帮助,谢谢。
此外,我没有写main.cpp,它是与赋值一起给出的。
在C ++中, A
类的函数foo
可以由A.foo()
或A_ptr->foo()
调用,只是foo()
不起作用。
我认为你不需要这里的课,只需使用免费功能。
如果你想使用MyArray
类,则不需要编写int *Array1, *Array2;
在main.cpp中并将其作为arg传递。 最好将数组存储在MyArray
类中。
像这样。
main.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 ++的书并进行研究。 您需要创建一个MyArray对象并使用该对象调用函数:
MyArray myArr;
myArr.CreateArray(Array1, Array1Size);
等等
如果给出main,则createArray必须在内部创建数组:
MyArray myArr;
void CreateArray(int *array, int size)
{
return myArr.CreateArray(array, size);
}
首先,你已经了解了什么是课程。 在您调用MyArray函数的情况下,您必须拥有MyArray类的实例:
MyArray a;
a.CreateArray(...);
...
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.