gpt4 book ai didi

c++ - NotImplementedException C++

转载 作者:行者123 更新时间:2023-11-27 23:55:28 32 4
gpt4 key购买 nike

来自答案here我实现了我的类 NotImplementedException

//exceptions.h
namespace base
{
class NotImplementedException : public std::logic_error
{
public:
virtual char const* what() { return "Function not yet implemented."; }
};
}

在另一个类中我想抛出以下异常(相同的命名空间):

    std::string to_string() override
{
throw NotImplementedException();
}

to_string 方法是来自抽象基类的重写方法。

namespace BSE {
class BaseObject
{
virtual std::string to_string() = 0;
};
}

不幸的是,前面代码的编译显示了这个错误:

error C2280: BSE::NotImplementedException::NotImplementedException(void)': attempting to reference a deleted function`

来自 here我知道这个问题与 move 构造函数或赋值有关,根据 cppreference.com - throw (1)可能是这种情况:

First, copy-initializes the exception object from expression (this may call the move constructor for rvalue expression, and the copy/move may be subject to copy elision)

我尝试添加

    NotImplementedException(const NotImplementedException&) = default;
NotImplementedException& operator=(const NotImplementedException&) = default;

我的类(class),但这给了我

error C2512: 'BSE::NotImplementedException': no appropriate default constructor available

据我所知,std::logic_error 没有定义默认构造函数。

:我该如何解决这个问题?

最佳答案

应该是这样的:

namespace base
{
class NotImplementedException : public std::logic_error
{
public:
NotImplementedException () : std::logic_error{"Function not yet implemented."} {}
};
}

然后

std::string to_string() override
{
throw NotImplementedException();
}

关于c++ - NotImplementedException C++,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42939299/

32 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com