首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >“CalucateNumbers”缺少异常规范“noexcept”

“CalucateNumbers”缺少异常规范“noexcept”
EN

Stack Overflow用户
提问于 2018-03-27 23:10:17
回答 2查看 10.1K关注 0票数 3

我是C++的初学者

我在设置头类的值时遇到了问题。

代码语言:javascript
复制
CalucateNumbers::CalucateNumbers() {
    ResetValues();
}

void CalucateNumbers::ResetValues() {
    firstNumber = 0;
    secondNumber = 8;
}

CalucateNumber缺少异常规范noexcept

帮帮忙好吗?

这是名为FBullCowGame.cpp的C plus plus代码文件

代码语言:javascript
复制
#include "FBullCowGame.hpp"

FBullCowGame::FBullCowGame() {
    Reset();
}

void FBullCowGame::Reset() {
    CurrentTries = 0;
    MaxTries = 8;
}

这是名为FBullCowGame.hpp的头文件

代码语言:javascript
复制
#ifndef FBullCowGame_hpp
#define FBullCowGame_hpp

#include <stdio.h>
#include <string>

#endif /* FBullCowGame_hpp */


class FBullCowGame {
public:
    void Reset(); // TODO Make a reset void
// Not important.., The important is this ^^
private:
    int CurrentTries;
    int MaxTries;
};

Here is the MCVE on godbolt

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-03-28 00:23:10

当你被问到定义是否与标题匹配时,你回答“是的,它是匹配的”,这是错误的。它与标题不匹配,因为它甚至不存在于标题中!

您的class FBullCowGame没有声明一个自定义构造函数,因此编译器创建了一个默认的构造函数。然后,您尝试创建一个自定义的构造函数,编译器认为您正在尝试实现默认构造函数(恰好是noexcept),因此它会说“此重新声明与隐式声明不匹配”。

你真正的问题是忘记告诉编译器“我要给这个类一个自定义的构造函数”。

代码语言:javascript
复制
class FBullCowGame {
public:
    FBullCowGame(); // <----- you forgot this
    void Reset(); // TODO Make a reset void
// Not important.., The important is this ^^
private:
    int CurrentTries;
    int MaxTries;
};

(头文件中#ifdef保护的作用域也有问题。)

票数 14
EN

Stack Overflow用户

发布于 2018-03-28 00:23:02

这是一个非常误导人的错误信息。问题在于,类定义没有声明默认构造函数,但源代码试图实现一个构造函数。若要解决此问题,请向类定义中添加默认构造函数的声明。

票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49516548

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档