我想用c ++指出一个数组,这可能吗?
我的主要代码:
#include "ArrayPointerClass.h"
#include "stdafx.h"
#include <iostream>
#include <string>
int _tmain(int argc, _TCHAR* argv[])
{
float arr[2];
ArrayPointerClass::pointingArray(&arr);
return 0;
}
ArrayPointerClass.h
#pragma once
static class ArrayPointerClass
{
public:
ArrayPointerClass();
~ArrayPointerClass();
static void pointingArray(float* arr[2]);
};
ArrayPointerClass.cpp
#include "stdafx.h"
#include "ArrayPointerClass.h"
ArrayPointerClass::ArrayPointerClass()
{
}
ArrayPointerClass::~ArrayPointerClass()
{
}
void ArrayPointerClass::pointingArray(float* arr[2]){
float newArray[2] = { 2.2f, 2.2f };
*arr = newArray;
}
我收到了这个错误: 错误3错误C2653:&#39; ArrayPointerClass&#39; :不是类或命名空间名称c:\ users \ alex \ documents \ visual studio 2013 \ projects \ pointerarray \ pointerarray \ pointerarray.cpp 13 1 PointerArray
错误3错误C3861:&#39; pointingArray&#39;:未找到标识符c:\ users \ alex \ documents \ visual studio 2013 \ projects \ pointerarray \ pointerarray \ pointerarray.cpp 13 1 PointerArray
我知道在C ++数组中,不允许使用没有定义长度的数组。是这个原因吗?
感谢您的支持
答案 0 :(得分:1)
* arr = newArray;不起作用你不能像这样复制一个C数组。 你可以做像memcpy()或std :: copy();
memcpy( newArray, arr, 2);
std::copy( newArray, newArray+2, arr);
答案 1 :(得分:1)
无法在c ++中创建静态类。 static 关键字可以应用于对象和函数。 每个数组名称都是一个指针。因此,不能在参数中给出下标。提供指针类型就足够了。
修改后的代码:
#include <iostream>
#include <string>
using namespace std;
class ArrayPointerClass
{
public:
ArrayPointerClass();
~ArrayPointerClass();
static void pointingArray(float* arr);
};
ArrayPointerClass::ArrayPointerClass()
{
}
ArrayPointerClass::~ArrayPointerClass()
{
}
void ArrayPointerClass::pointingArray(float* arr){
float newArray[2] = { 2.2f, 2.2f };
arr = newArray;
}
int main()
{
float arr[2];
ArrayPointerClass obj;
obj.pointingArray(arr);
return 0;
}
答案 2 :(得分:-2)
感谢大家的回答(即使有部分工作) 我发现自己是一个解决方案
// PointerArray.cpp : Defines the entry point for the console application.
//
#include "stdafx.h"
#include <iostream>
#include <string>
using namespace std;
int* test() {
int size_needed = 2;
int* a = new int[size_needed];
a[0] = 0;
a[1] = 0;
return a;
}
int main()
{
//int arr[2] = { 1, 1 };
int* arr = test();
for (int i = 0; i < 2; i++){
cout << arr[i] << std::endl;
}
cin.get();
return 0;
}