首页 > 解决方案 > 运行 VC 6.0 C++ 时,不断出现错误 C2146

问题描述

#include <iostream>
#include <vector>
#include <windows.h>
using namespace std;

int main()
{
    // your code goes here
    class Solution {
    public:
        vector<vector<int> > combinationSum(vector<int>& candidates, int target);
        vector<vector<int> > combinationSum(vector<int>& candidates, int target)
        {
            vector<vector<int> > res;
            vector<int> out;
            combinationSumDFS(candidates, target, 0, out, res);
            return res;
        }
        void combinationSumDFS(vector<int>& candidates, int target, int start, vector<int>& out, vector<vector<int> >& res)
        {
            if (target < 0)
                return;
            if (target == 0) {
                res.push_back(out);
                return;
            }
            for (int i = start; i < candidates.size(); ++i) {
                out.push_back(candidates[i]);
                combinationSumDFS(candidates, target - candidates[i], i, out, res);
                out.pop_back();
            }
        }
    } yoyo;
    vector<int> aa = [ 1, 2, 3, 4, 5 ];
    vector<vector<int> > restl = [[]];
    restl = yoyo.combinationSum(&aa, 3);
    court << restl;
    return 0;
}

当我运行上述内容时,我得到了

F:\VC6.0\Microsoft Visual Studio\Common\MSDev98\Bin\combinationSum.cpp(10) : error C2146: syntax error : missing ',' before identifier 'combinationSum'". 

标签: c++

解决方案


有很多错误:

  • 第一个声明vector<vector<int> > combinationSum(vector<int>& candidates, int target);毫无意义且错误,只需将其删除即可。
  • vector<int> aa = [ 1, 2, 3, 4, 5 ]是错的。初始化列表必须用 分隔{}vector<int> aa = { 1, 2, 3, 4, 5 };
  • [[]]没有意义,直接放弃
  • yoyo.combinationSum(&aa, 3); 错了,应该是yoyo.combinationSum(aa, 3);因为vector是通过引用传递的,所以这里不需要指针。
  • 中有一个错字court << restl,应该是cout << restl,但无论如何向量没有输出运算符<<,你必须自己循环遍历向量,我把这个作为练习留给你。

推荐阅读