' ' 在这方面没有申明
' ' was not declared in this scope
我试图实现这个动态数组,但我 运行 遇到了一些问题
当我尝试编译它时,编译器告诉我我的一堆函数没有在此范围内声明
这是文件
dynamicArray.h
#ifndef DYNAMICARRAY_H
#define DYNAMICARRAY_H
#include <ctime>
#include<iostream>
class dynamicArray{
public:
dynamicArray();
int * array_constructor(int * &intPtr, int &size );
int * array_resize(int * &intPtr, int& currSize, int& newSize);
void array_destructor(int * &intPtr);
void array_set(int* &intPtr, int &size);
};
#endif // DYNAMICARRAY_H
dynamicArray.cpp
#include "dynamicArray.h"
#include <iostream>
#include <ctime>
#include <cstdlib>
using namespace std;
int * array_constructor(int * &intPtr, int &size ){
if(intPtr != NULL){
delete [] intPtr;
}
intPtr = new int[size];
for (int i = 0; i < size; i++){
intPtr[i] = i*i;
}
return intPtr;
}
int * array_resize(int * &intPtr, int& currSize, int& newSize){
if(newSize == 0){
delete [] intPtr;
return NULL;
}else if((newSize == currSize) || (newSize < 0)){
return intPtr;
}
int * array = new int[newSize];
for (int i = 0; i < newSize; i++){
array[i] = i*i;
}
return array;
}
void array_destructor(int * &intPtr){
delete [] intPtr;
intPtr = NULL;
}
void array_set(int*& intPtr, int& size){
srand(time(0));
for (int i = 0; i < size; i++){
intPtr[i] = rand();
}
}
main.cpp
#include "dynamicArray.h"
#include <array>
#include <iostream>
using namespace std;
void print(int array[], int size){
if(array == NULL){
cout << "array is empty" << endl;
return;
}
for(int i = 0; i < size; i++){
cout << "array[" << i << "] = " << array[i] << endl;
}
cout << endl;
return;
}
int main() {
int *myArray = NULL;
int size = 8;
int newSize1 = 10;
int newSize2 = 5;
int newSize3 = -1;
int finalSize = 1;
myArray = array_constructor(myArray, size);
print(myArray, size);
myArray = array_resize(myArray, size, newSize1);
print(myArray, newSize1);
myArray = array_resize(myArray, newSize1, newSize2);
print(myArray, newSize2);
myArray = array_resize(myArray, newSize2, newSize3);
print(myArray, newSize2);
array_set(myArray, newSize2);
print(myArray, newSize2);
array_destructor(myArray);
print(myArray, finalSize);
return 0;
}
我试着用 int * dynamicArray::array_constructor(int * &intPtr, int &size ) 代替,但没有成功
我是不是在头文件或 dynamicArray.cpp 中做错了什么?
这个以前有用过,但是忘记怎么做了。
如果您想在 class 中实现动态数组管理,您需要使用 class 名称来限定您的方法实现。
dynamicArray.cpp
int * dynamicArray::array_constructor(int * &intPtr, int &size ){
if(intPtr != NULL){
// ...
其他成员功能相同。
但是,您根本没有以 class-like 的方式使用 class。因此,您可以考虑将 class 变成 namespace
并在那里(或在全局范围内)实现功能:
dynamicArray.h
namespace dynamicArray // optional namespace
{
int * array_constructor(int * &intPtr, int &size );
int * array_resize(int * &intPtr, int& currSize, int& newSize);
void array_destructor(int * &intPtr);
void array_set(int* &intPtr, int &size);
}
dynamicArray.cpp
namespace dynamicArray // optional namespace
{
int * array_constructor(int * &intPtr, int &size ){
if(intPtr != NULL){
// ... implement your functions like before
}
main.cpp - 添加命名空间用法
//...
using namespace std;
using namespace dynamicArray;
//...
我试图实现这个动态数组,但我 运行 遇到了一些问题 当我尝试编译它时,编译器告诉我我的一堆函数没有在此范围内声明
这是文件
dynamicArray.h
#ifndef DYNAMICARRAY_H
#define DYNAMICARRAY_H
#include <ctime>
#include<iostream>
class dynamicArray{
public:
dynamicArray();
int * array_constructor(int * &intPtr, int &size );
int * array_resize(int * &intPtr, int& currSize, int& newSize);
void array_destructor(int * &intPtr);
void array_set(int* &intPtr, int &size);
};
#endif // DYNAMICARRAY_H
dynamicArray.cpp
#include "dynamicArray.h"
#include <iostream>
#include <ctime>
#include <cstdlib>
using namespace std;
int * array_constructor(int * &intPtr, int &size ){
if(intPtr != NULL){
delete [] intPtr;
}
intPtr = new int[size];
for (int i = 0; i < size; i++){
intPtr[i] = i*i;
}
return intPtr;
}
int * array_resize(int * &intPtr, int& currSize, int& newSize){
if(newSize == 0){
delete [] intPtr;
return NULL;
}else if((newSize == currSize) || (newSize < 0)){
return intPtr;
}
int * array = new int[newSize];
for (int i = 0; i < newSize; i++){
array[i] = i*i;
}
return array;
}
void array_destructor(int * &intPtr){
delete [] intPtr;
intPtr = NULL;
}
void array_set(int*& intPtr, int& size){
srand(time(0));
for (int i = 0; i < size; i++){
intPtr[i] = rand();
}
}
main.cpp
#include "dynamicArray.h"
#include <array>
#include <iostream>
using namespace std;
void print(int array[], int size){
if(array == NULL){
cout << "array is empty" << endl;
return;
}
for(int i = 0; i < size; i++){
cout << "array[" << i << "] = " << array[i] << endl;
}
cout << endl;
return;
}
int main() {
int *myArray = NULL;
int size = 8;
int newSize1 = 10;
int newSize2 = 5;
int newSize3 = -1;
int finalSize = 1;
myArray = array_constructor(myArray, size);
print(myArray, size);
myArray = array_resize(myArray, size, newSize1);
print(myArray, newSize1);
myArray = array_resize(myArray, newSize1, newSize2);
print(myArray, newSize2);
myArray = array_resize(myArray, newSize2, newSize3);
print(myArray, newSize2);
array_set(myArray, newSize2);
print(myArray, newSize2);
array_destructor(myArray);
print(myArray, finalSize);
return 0;
}
我试着用 int * dynamicArray::array_constructor(int * &intPtr, int &size ) 代替,但没有成功 我是不是在头文件或 dynamicArray.cpp 中做错了什么? 这个以前有用过,但是忘记怎么做了。
如果您想在 class 中实现动态数组管理,您需要使用 class 名称来限定您的方法实现。
dynamicArray.cpp
int * dynamicArray::array_constructor(int * &intPtr, int &size ){
if(intPtr != NULL){
// ...
其他成员功能相同。
但是,您根本没有以 class-like 的方式使用 class。因此,您可以考虑将 class 变成 namespace
并在那里(或在全局范围内)实现功能:
dynamicArray.h
namespace dynamicArray // optional namespace
{
int * array_constructor(int * &intPtr, int &size );
int * array_resize(int * &intPtr, int& currSize, int& newSize);
void array_destructor(int * &intPtr);
void array_set(int* &intPtr, int &size);
}
dynamicArray.cpp
namespace dynamicArray // optional namespace
{
int * array_constructor(int * &intPtr, int &size ){
if(intPtr != NULL){
// ... implement your functions like before
}
main.cpp - 添加命名空间用法
//...
using namespace std;
using namespace dynamicArray;
//...