微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

在 C++ 中更新基于 for 循环的范围内的类成员值

如何解决在 C++ 中更新基于 for 循环的范围内的类成员值

上面的代码有效。它下面的代码没有。为什么?

我正在使用对象的名称成员在 C++ 中搜索类对象的向量,以增加它的监视成员。常规 for 循环和语法成功地增加了成员。但是,我尝试使用我认为是基于范围的 for 循环的正确语法来做同样的事情是不成功的。使其成功的正确语法是什么?

#include <stdio.h>
#include <stdlib.h>

// Function Prototype..
void totSchol(float total [],float *aPointer);

int main(void)
{
    // Declare Local Variables..
    int i;
    float amt[5]={0},tot;
    //points to the array variable.
    float *aPointer = &amt[0];
    //prompts AYTB Bank..
    printf("\t\t AYTB Bank\n");
    for (i=0; i<5; i++)
    {
        //prompts to enter scholarship amount for 5 students..
        printf("Student %d,Enter scholarship amount: ",i+1);
        //takes value entered and store in pointer variable aPointer & increment by i..
        scanf("%f",aPointer + i);
        tot += aPointer;
    }

    totSchol(amt,aPointer);
    
    return 0;
}


void totSchol(float total [],float *aPointer)
{
    int x;
    float year3;
    
    for (x=0; x < 5; x++)
    {
        
        printf("\nThe total amount for each studetn is: %.2f",(aPointer + x));
        year = (aPointer +x) * 3;
        printf("\nThe total amount for each studetn after 3 years is: %.2f",year3);
        
    }
}

顺便说一句,如果有区别,这些循环在一个方法内部,该方法与向量一起是向量中对象类的友元类的成员。而且我也已经尝试过 ++m.watched;和 ++(m.watched);没有成功。谢谢

解决方法

您的循环每次迭代都会将元素复制到 m 中。您对 m 的更改将针对该副本。使 m 成为对容器中元素的引用:

     for(auto& m : mList)

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?