我正在尝试创建一个向量调用容器类,并尝试将 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
这是一个运算符优先级错误,
.
的优先级高于 *
所以你需要括号。
(*ptr).PrintSum();
或者你可以只使用
->
ptr->PrintSum();