【发布时间】:2014-11-04 17:24:49
【问题描述】:
我想使用变量创建一个特定大小的数组,但据称唯一的方法是使用指针。
int size = 5;
string* myArray = new string[size];
我现在想将这个数组中的一个元素分配给另一个变量,我相信这只能通过取消引用来工作。以下代码行不起作用。我该如何解决?
string line;
myArray[0] = "Hello";
line = *myArray[0];
编辑:
我只是想澄清一点:使用普通的“myArray[0]”代码也不起作用。它可以编译,但会导致崩溃。下面是一些关于我想要做什么的更具体的代码。
void MyClass::setLine(string line)
{
myLine = line; /*This is a private variable in MyClass*/
}
///////////////
MyClass* elements = new MyClass[size];
elements[0].setLine(myArray[0]);
我想将数组元素分配给类中的私有变量,但是当我尝试将值分配给私有变量时程序崩溃。
【问题讨论】:
-
line = myArray[0];我强烈建议你改用vector<string> myArray(size);,因为它会删除自己的内存。 -
...或者如果您有固定大小,请改用
std::array<std::string,5>。 -
您可能会说“出现编译错误”并粘贴错误消息,而不是说“不起作用”。对于这个简单的问题,它并不重要,但它通常是一种有用的做法。
-
myArray[0]已经是取消引用了 -
您似乎有 2 个数组,其中一个有问题... 稍微调试一下以找出哪个数组,然后提出一个新问题。此外,3 人建议将指针替换为
std::vector,1 人建议将指针替换为std::array。这些都是很好的建议...
标签: c++ arrays pointers element dereference