我在下面代码的第一行收到错误。错误是
error: expected ‘,’ or ‘...’ before ‘distances’
我不知道它实际上是什么问题。我正在使用ideone,如果这有帮助,但我不认为这会导致问题。
vector<string> Most(bitset<4> treasure, int distance, string path, int p, int[] distances, string[] paths){
for(int i = 1; i<4; i++){
if(100>=distances[p*4+1+i]+distances[i*5+1]){
Most(treasure, distance+distances[p*4+1+i], path.append(paths[p*4+1+i]),i, distances, paths);
}
}
vector<string> test;
return test;
}
答案 0 :(得分:1)
更改这些参数声明
int[] distances, string[] paths
到
int distances[], string paths[]
您使用的语法在C#中不在C ++中有效。
您确定该功能有效吗?它总是返回一个空向量。并且考虑到用作参数路径的原始对象不会被更改,因为它是通过值传递给函数
答案 1 :(得分:0)
这编译..虽然我不确定它应该做什么:
#include <vector>
#include <string>
#include <bitset>
using namespace std;
// I modified the function signature from "string[] paths" to "string* paths",
// the same for `int[] distances`
vector<string> Most(bitset<4> treasure, int distance, string path, int p, int* distances, string* paths)
{
for(int i = 1; i<4; i++){
if(100>=distances[p*4+1+i]+distances[i*5+1]){
Most(treasure, distance+distances[p*4+1+i], path.append(paths[p*4+1+i]),i, distances, paths);
}
}
vector<string> test;
return test;
}
// it is better if you post runnable code
int main() {
}
如果您仍有问题,请尝试将代码修改为最小,但可以运行。 ;)