函数参数中的向量"Non-standard syntax"错误
"Non-standard syntax" error with vectors in function arguments
我是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();
不过,我承认。编译器错误不太能解释。它源于这样一个事实,即如果您使用函数而不带括号,则可以将其视为指针。这对于存储回调之类的事情很有用。但这不是你在这里要做的事情,所以你只想调用这个函数。
相关文章:
- 使用 cmake 的 Linux 终端上的"Conversion to non-scalar type is requested"错误
- 收到错误"invalid use of non-static data member 'stu::n' "
- 当初始值设定项是基类名时'initializer does not name a non-static data member or base class'错误
- 出现这种错误的原因是什么"invalid use of non-static data member "
- 为什么"non-standard syntax; use '&' to create a pointer to member"在 CTOR 中使用线程?
- 函数参数中的向量"Non-standard syntax"错误
- 如果它被定义为 C++ 类中的成员函数,我得到了"non-standard syntax; use '&' to create a pointer to member"
- 在C++中传递对象会产生'invalid use of non-static member'错误
- 为什么当我尝试在类中创建数组时"invalid use of non-static data member"我会收到错误?
- Visual Studio 2015:获取"non standard syntax, use '&' to create a pointer to member"错误
- 我收到一个" conversion from ‘std::string (*)[50]’ to non-scalar type ‘std::string’ requested"错误,似乎无法修复它
- 布尔函数"Control reaches end of non-void function"错误
- C++编译器错误"cannot be thread-local because it has non-POD type""
- 使用带有对象的数组调用类中的方法,错误"non-class type",c++
- 为什么我会收到错误"non-template 'f' used as template"
- Visual Studio 2015 "non-standard syntax; use '&' to create pointer for member"
- 了解重载运算符。收到"non-standard syntax; use '&' to create a pointer to a member"错误
- 使用嵌套模板时出现"template definition of non-template"错误
- Visual Studio 2015 "non-standard syntax; use '&' to create a pointer to member"
- Visual Studio 2015 中的"non-standard syntax; use '&' to create a pointer to member"错误