函数参数中的向量"Non-standard syntax"错误



我是C++新手,虽然我知道一些 Java,我试图制作一个找到素数并打印它们的程序,但不是通过对所有小于 n 的整数 m 执行 n%m 并测试它是否为 0 来测试 n 是否是素数,它只测试已经找到的素数的模数是否为 0, 因为它给出了相同的结果,但可能更有效率(尽管我对效率的看法可能完全错误,但我想更多地将其作为一种练习(。我面临的问题是它抛出"非标准语法;使用"&"创建指向成员的指针"错误,我不确定它是什么意思。我只知道指针的基础知识,所以不知道如何解决这个问题以及问题到底是什么。

我已经尝试在向量之前的不同位置扔一堆"&"符号,希望让它意外工作,但我无法弄清楚。这是我现在的代码:

using namespace std;
bool isPrime(vector<int> list, int number);
int main()
{
int n;
cin >> n;
vector<int> primes;
primes.push_back(2);
for (int m = 3; m <= n; m=m+2)
{
if (isPrime(primes, m))
{
primes.push_back(m);
}
}
for (int m = 0; m < n; m++)
{
cout << primes[m];
}
}
bool isPrime(vector<int> list, int number)
{   
int l = list.size;
bool isPrime = true;
for (int n = 0; n < l; n++)
{
if (number % list[n] == 0) 
{
isPrime = false;
}
}
return isPrime;
}

这是错误消息:

非标准语法;使用"&"创建指向具有 [_Ty=int] 的成员的指针

为什么会这样?

要在C++中调用函数,您需要使用()符号。

int l = list.size();

这个错误有点令人困惑。

问题是std::vector::size实际上是一个函数,而不是数据成员。

因此,要调用它,您需要括号:

int l = list.size();

不过,我承认。编译器错误不太能解释。它源于这样一个事实,即如果您使用函数而不带括号,则可以将其视为指针。这对于存储回调之类的事情很有用。但这不是你在这里要做的事情,所以你只想调用这个函数。

最新更新