我是一个noob工作我的基本业余爱好程序,我已经创建了一个类复合并添加了字符串 compundname ,但我想设计它的方式,当我把在compund字符串中的一些无效元素中,ex- NaMmO4 编译器不会让我创建对象,而是出现类似" Mm无效元素"
之类的错误注意::我在这里只关注错误处理。
示例
复方钠盐{" NMmO4"}
编译器应该给出类似的错误 -
Mm是一个无效元素。无法创建对象。
答案 0 :(得分:0)
您对编译器的工作以及编译器错误是什么感到困惑。
编译器错误主要是sintax错误和易于点错的运行错误,编译器不知道你在做什么。编写错误的字符串名称永远不会是编译器错误。此外,似乎名称将在运行时写入,这发生在编译时间之后。
可能想做这样的事情:
#include <iostream>
#include <exception>
using namespace std;
//some people are heavily against it, but I think is easier to use it if you are a beginner.
enum class elem_t{elem1, elem2, elem3};
class outOfBound: public exception
{
virtual const char* what() const throw()
{
return "Error: Accessed an element that doesn't exists.";
}
} noElem;
class Compound{
public:
Compound(elem_t* elems, int size){_elems = elems; _size = size;}
//can't include something is not part of elem_t
elem_t operator()(unsigned pos) const {if(pos < _size) return _elems[pos]; else throw noElem;}
int size() const{return _size;}
private:
elem_t* _elems;
int _size;
};
int main()
{
elem_t a[] = {elem_t::elem2, elem_t::elem1};
Compound first(a,2);
return 0;
}
我没有做的唯一基本事情是print()或运算符&lt;&lt;,但它应该很容易。