【发布时间】:2016-01-08 03:50:28
【问题描述】:
我想在 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: 'ArrayPointerClass' : 不是类或命名空间名称 c:\users\alex\documents\visual studio 2013\projects\pointerarray\pointerarray\pointerarray.cpp 13 1 PointerArray
错误 3 错误 C3861: 'pointingArray': 找不到标识符 c:\users\alex\documents\visual studio 2013\projects\pointerarray\pointerarray\pointerarray.cpp 13 1 PointerArray
我知道在 C++ 数组中,不允许使用未定义长度的数组。是这个原因吗?
感谢您的支持
【问题讨论】:
-
如果这是您的意图,您不能分配给 C 数组。
std::array效果好很多,指针和引用的语法和正常一样。 -
使用
std::vector。这就是它的用途。 -
此代码的一个问题(当前)未在任何答案中解决是您的第一个错误的来源:您在
stdafx.h之前包含ArrayPointerClass.h,预编译头 (PCH)对于 VC++。当它解析 PCH 时,它将跳过包含stdafx.h的所有内容,导致您的ArrayPointerClass.h标头被跳过而不包括在内,这会生成您在问题中报告的错误。
标签: c++ arrays pointers static