我正在尝试实现异常并将其排除在我的方法之外。

这是h文件的例外

#ifndef EXCEPTION_H
#define EXCEPTION_H

#include <exception>
#include <string>

namespace core {

class no_implementation: public std::exception {
private:
    std::string error_message;
public:
    no_implementation(std::string error_message);
    const char* what() const noexcept;
};

typedef no_implementation noimp;

}

#endif


这是cpp文件

#include "../headers/exception.h"

using namespace core;

no_implementation::no_implementation(std::string error_message = "Not implemented!") {
    this->error_message = error_message;
}

const char* no_implementation::what() const noexcept {
    return this->error_message.c_str();
}


这是方法

std::string IndexedObject::to_string() {
    throw noimp;
}


但这显示我错误

throw noimp; //expected primary-expression before ';' token


有什么问题?

最佳答案

要创建这种类型的临时文件,您需要使用这样的符号(请注意额外的括号):

throw noimp();


如果没有括号,则尝试抛出类型而不是对象。除非将默认值移动到声明中,否则您还将指定字符串:使用默认值时,该默认值必须可见。

关于c++ - 预期在';'之前的主要表达式代币,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/31495731/

10-17 01:40