我不知道如何解决将数组传递到类方法时出现的错误

问题描述 投票:0回答:1

当我将湖人队名单放入湖人队方法参数中时,它显示:

错误:删除时未知数组大小

注意:这里首先需要合成方法 'Team::~Team()' Team Lakers("洛杉矶湖人队", 70, 12, LakersStartRoster)//有一个箭头指向最后一个括号;

代码

    #include <iostream>
    #include <string>

    using namespace std;

    string lakersStartRoster[] = {"LeBron", "AD", "Austin", "Rui", "D'Angelo"};

    class Team {
        public:
            string name;
            int wins, losses;
            string roster[];
            Team(string x, int a, int b, string y[]){
                name = x;
                wins = a;
                losses = b;
                cout << y << endl;
            }
    };

    int main(){

        Team lakers("Los Angeles Lakers", 70, 12, lakersStartRoster);

        return 0;
    }

错误

main.cpp:8:7: error: unknown array size in delete
        8 | class Team {
      |       ^~~~
    main.cpp: In function 'int main()':
    main.cpp:23:68: note: synthesized method 'Team::~Team()' first required here
       23 |         Team lakers("Los Angeles Lakers", 70, 12, lakersStartRoster);
          |

我在 Windows 的 powershell 终端上收到此错误消息***

我以为我做得正确,但我收到了错误消息。我尝试在网上寻找类似的问题以及如何在 C++ 中使用数组,但我似乎找不到任何关于为什么我收到此错误的信息。

arrays class visual-c++ parameters compiler-errors
1个回答
0
投票

更多详情请参阅我的评论。

这里是带有

std::vector
的代码,对于初学者来说这是一个整体更好的实现。

#include <iostream>
#include <string>
#include <vector> // std::vector


using namespace std;

vector<string> lakersStartRoster = {"LeBron", "AD", "Austin", "Rui", "D'Angelo"};

class Team {
    public:
        string name;
        int wins, losses;
        vector<string> roster{}; // note: you never set this value in your original code
        Team(string x, int a, int b, vector<string> y){
            name = x;
            wins = a;
            losses = b;
            for(string element : y) cout << element << endl; // note: you cannot just output a vector or array itself
            roster = y; // set the value here
        }
};

int main(){

    Team lakers("Los Angeles Lakers", 70, 12, lakersStartRoster);

    return 0;
}
© www.soinside.com 2019 - 2024. All rights reserved.