c++ vector iterator to a ptr Error: std::vector<Test>::iterator’ has no member named ‘PrintSum’

问题描述 投票:0回答:1

我正在尝试创建一个向量调用容器类,并尝试将 ptr 设置为容器的指针。 然后我尝试将容器中的每个值设置为类 Test。然后我尝试调用类中的函数,但它给我一个错误 std::vector::iterator' has no member named ‘PrintSum'

#include <iostream>
#include <vector>
#include <cstdlib>
#include <time.h>
#include "Test.h"

using namespace std;

int main()
{

        srand((unsigned)time(NULL));

        vector<Test> container(5);

        vector<Test>::iterator ptr;

        for (ptr = container.begin(); ptr!=container.end(); ptr++){

                int x = rand() % 10 + 1;
                int y = rand() % 10 + 1;

                *ptr = Test(x, y);

                *ptr.PrintSum();

        }

        return 0;

}

它工作正常,我不调用该函数,但我不知道为什么。

另外,类的代码:

#ifndef TEST_H
#define TEST_H

#include <iostream>

class Test{

        public:

                Test(){}

                Test(int x, int y)
                {

                        this->x = x;
                        this->y = y;

                }

                void PrintSum()
                {

                        std::cout << x + y << '\n';

                }

        private:

                int x;
                int y;

};

如果你知道如何修复错误,希望你能帮助我。谢谢你uwu

c++ pointers vector containers
1个回答
0
投票

这是一个运算符优先级错误,

.
的优先级高于
*
所以你需要括号。

(*ptr).PrintSum();

或者你可以只使用

->

ptr->PrintSum();
© www.soinside.com 2019 - 2024. All rights reserved.