【发布时间】:2022-01-10 11:33:22
【问题描述】:
当我运行它给出的代码时
error: 'passArray' was not declared in this scope
cout << passArray[2];
^~~~~~~~~
所以我想访问该字符数组并修改该数组。例如用户输入是last(在string p) 那么它将被转换成字符数组(passArray)。然后void convert()函数应该将passArray[0](字母l)修改为字母f,并将输出作为fast。像这样,我想一次将多个字母修改为 l to f 、 a to e 、 s to l 、 t to t 最终单词将是 felt 来自单词 last。
代码如下:
#include <bits/stdc++.h>
using namespace std;
class PasswordConverter {
protected:
string p;
int length;
public:
void getPassword() {
cout << "Enter password to convert into strong one: ";
cin >> p;
length = p.length();
}
void show() {
cout << p << endl;
cout << length << endl;
}
};
class strToarr : public PasswordConverter {
public:
void typeCast() {
char passArray[length + 1];
strcpy(passArray, p.c_str());
}
};
class Convert : public strToarr {
public:
void convert() {
cout << passArray[2];
}
};
int main(int argc, char const *argv[]) {
Convert strong;
strong.getPassword();
strong.show();
strong.typeCast();
strong.convert();
return 0;
}
【问题讨论】:
-
我不明白,
passArray是一个局部变量,convert运行时它不存在。没有成员函数的数据成员这样的东西。另外passArray[length + 1];不是有效的 C++,VLA 不是标准的,只需使用std::vector。 -
@Quimby 是的,你是对的
passArray是一个局部变量,我怎样才能使全局变量?和passArray[length +1]这是我从GeeksforGeeks 方法1 复制的 -
@VoraArshit 我反对全球。我不明白
Convert和strToarr类的目的是什么,你能不能只拥有返回结果的独立函数typeCast和convert?我认为不需要对象...哦,不幸的是那里的代码也不正确,大小必须是编译时常量,可变长度数组(VLA)只是GCC的扩展,不是标准的. -
@Quimby 我不太懂 c++。
strToarr的目的是将字符串p转换为字符数组passArry,而 `Convert 的目的是修改字符串,正如我在这个问题中所说的那样。我不知道什么是独立函数。 -
@VoraArshit 没有类的函数,我添加了一个答案,我将如何编写这样的代码。