长庚之上 2024-04-28 18:06 采纳率: 50%
浏览 3

在面向对象程序设计中出现以下错误,不明白怎么解决

img


在面向对象程序设计中出现以下错误,不明白怎么解决,部分代码如下

img

img

请求解决思路,

  • 写回答

5条回答 默认 最新

  • 专家-赤兔[在线] 优质创作者: 编程框架技术领域 2024-04-28 18:06
    关注

    引自免费微信小程序:皆我百晓生

    从您提供的错误信息和代码片段来看,您在编写C++代码时遇到了一些语法错误。下面是针对您的代码中的错误进行的逐行检查及修复建议。

    首先,让我们先查看错误消息:

    1. qualified-id in declaration before '(' token
    2. expected ')' at end of input

    这些错误通常是因为括号不匹配、缺少分号或者类成员函数定义格式有误。

    根据错误提示,我们先关注SuperLotto.h文件中的问题。这里有一些成员函数定义的开始处出现了错误,它们缺少了右大括号},导致编译器无法正确识别函数签名。以下是修复后的SuperLotto.h文件:

    #ifndef SUPERLOTTO_H
    #define SUPERLOTTO_H
    #include <vector>
    #include <ctime>
    #include <iostream>
    #include "Lottery.h"
    
    using namespace std;
    
    class SuperLotto : public Lottery {
    public:
        vector<int> generateRandomNumbers(int minNum, int maxNum, int count);
        void checkRepeatAdd(vector<int>& numbers, int num);
        bool checkNumber(vector<int>& numbers, int num);
        void setOptionalNumber();
        void setMachineNumber();
        void setWinningNumber();
        void computeringWin(const vector<int>& optionalNumbers,
                            const vector<int>& winningNumbers,
                            const vector<int>& specialOptionalUserNumbers,
                            const vector<int>& specialWinningNumbers);
    
    private:
        vector<int> machineNumbers;
        vector<int> specialMachineNumbers;
        vector<int> winningNumbers;
        vector<int> specialWinningNumbers;
    };
    
    #endif // SUPERLOTTO_H
    

    接着,我们查看SuperLotto.cpp中的错误。同样,我们需要确保所有的函数定义都包含正确的花括号,并且缩进要一致。这里是修复后的SuperLotto.cpp文件:

    #include "SuperLotto.h"
    
    void SuperLotto::setOptionalNumber() {
        cout << "普通码:" << endl;
        machineNumbers = generateRandomNumbers(1, 35, 5);
    
        cout << "特别号码:" << endl;
        specialMachineNumbers = generateRandomNumbers(1, 12, 2);
    }
    
    void SuperLotto::setWinningNumber() {
        cout << "中奖普通号码:" << endl;
        winningNumbers = generateRandomNumbers(1, 35, 5);
        for (int num : normalNumbers) { // 修复变量名错误
            cout << num << " ";
        }
        cout << endl;
    
        cout << "中奖特别号码:" << endl;
        specialWinningNumbers = generateRandomNumbers(1, 12, 2);
        for (int num : specialNumbers) { // 修复变量名错误
            cout << num << " ";
        }
        cout << endl;
    }
    
    void SuperLotto::computeringWin(const vector<int>& optionalNumbers,
                                    const vector<int>& winningNumbers,
                                    const vector<int>& specialOptionalUserNumbers,
                                    const vector<int>& specialWinningNumbers) {
        // 实现计算中奖逻辑
    }
    

    请注意,上述代码中只修复了语法错误,但为了使整个程序运行,还需要实现generateRandomNumbers()checkRepeatAdd()checkNumber() 函数,以及在computeringWin()函数中添加实际的中奖逻辑。

    如果您遇到其他问题,或者需要对这些函数的具体实现提供帮助,请随时告诉我。

    评论 编辑记录

报告相同问题?

问题事件

  • 创建了问题 4月28日