在我正在開發的程序中,我已經聲明瞭main中的一個矢量。我有兩個使用向量的函數:一個int函數和一個標準的void「print」函數。我試圖在void函數中使用一個函數指針(指向int函數),但我得到的錯誤是該向量尚未聲明,即使它在main中。我試過在main之外聲明vector,並且該函數運行良好,但是我仍然猶豫是否將它保留在main之外。我想知道在main函數中聲明時是否有某種方法在void函數中使用vector。下面是一些示例代碼要問我:C++通過函數指針調用函數中的矢量
// Example program
#include <iostream>
#include <vector>
using namespace std;
int returnSquare(vector<int>& numbers);
void print(int (*squarePtr)(vector<int>&));
int (*squarePtr)(vector<int>&);
int main()
{
vector<int> v(1);
squarePtr = &returnSquare;
for(int i = 0; i < v.size(); i++)
{
v.at(i) = i * 25;
cout << v.at(i) << " ";
}
print(squarePtr);
return 0;
}
int returnSquare(vector<int>& numbers)
{
int product = 0;
for(int i = 0; i < numbers.size(); i++)
{
product = numbers.at(i) * numbers.at(i);
}
return product;
}
void print(int (*squarePtr)(vector<int>&))
{
int answer = (*squarePtr)(v);
cout << answer << endl;
}