gpt4 book ai didi

c++ - 在 C++ 中更改私有(private)原始变量的值

转载 作者:行者123 更新时间:2023-11-28 02:20:50 25 4
gpt4 key购买 nike

class A {
private:
int numberOfElements;

public:
A() : numberOfElements(0) {}
void add() { numberOfElements++; }

numberOfElements 的值保持为 0。

void PhoneBook::add(std::string name, std::string phoneNumber) {
entries[numberOfElements] = Entry(name, phoneNumber);
numberOfElements++;
}

那是应该在我的应用程序中递增变量的实际代码。 A 类只是我原来的类的一个示例。

std::string PhoneBook::find(std::string name) {
for(int i = 0; i < numberOfElements; ++i) {
std::cout << i << std::endl;
if(entries[i].getName().compare(name) == 0) {
return entries[i].getPhoneNumber();
}
return "Name not found";
}
}

我打印出 i 的值以查看它是什么,它仍然为 0。

void PhoneBook::add(std::string name, std::string phoneNumber) {
entries[numberOfElements] = Entry(name, phoneNumber);
numberOfElements++;
}

std::ifstream in;
in.open("phonebook.txt");

while(in >> name && in >> phoneNumber) {
book.add(name, phoneNumber);
}

最佳答案

std::string PhoneBook::find(std::string name) {
for(int i = 0; i < numberOfElements; ++i) {
std::cout << i << std::endl;
if(entries[i].getName().compare(name) == 0) {
return entries[i].getPhoneNumber();
}
// end of if, still in the loop
return "Name not found";
// we never get past this, so the loop will
// run no more than a single time
}
}

问题可能是您提前终止了查找功能。将 return 语句放在 for 循环之外应该可以解决这个问题:

std::string PhoneBook::find(std::string const & name) {
for(int i = 0; i < numberOfElements; ++i) {
std::cout << i << std::endl;
if(entries[i].getName().compare(name) == 0) {
return entries[i].getPhoneNumber();
}
}
return "Name not found";
}

请注意,我更改了缩进。清楚地缩进代码有助于防止此类错误。 (我还更改了函数以接受 const 引用,这消除了制作无用拷贝的需要)

关于c++ - 在 C++ 中更改私有(private)原始变量的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32571627/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com