class A {
int x;
enum { MAX = 10 };
public:
A(int x_)
{
if(x_ >MAX) throw(1);
x=x_;
}
};
< /code>
Но как это сделать при использовании списка инициализатора? < /p>
class A {
int x;
enum { MAX = 10 };
public:
A(int x_) : x(x_)
{}
};
< /code>
Я очень удивлен, что GCC, MSC и Clang принимают это: < /p>
class A {
int x;
enum { MAX = 10 };
public:
A(int x_) : x(x_
Подробнее здесь: [url]https://stackoverflow.com/questions/79394220/throwing-exception-from-constructor-initialiser-list[/url]
Я хочу выбросить исключение из класса конструктора, когда заданный параметр выходит из диапазона. Это легко сделано изнутри тела конструктора: < /p> [code]class A { int x; enum { MAX = 10 };
public: A(int x_) { if(x_ >MAX) throw(1); x=x_; } }; < /code> Но как это сделать при использовании списка инициализатора? < /p> class A { int x; enum { MAX = 10 };
public: A(int x_) : x(x_) {} }; < /code> Я очень удивлен, что GCC, MSC и Clang принимают это: < /p> class A { int x; enum { MAX = 10 };
Я хочу выбросить исключение из класса конструктора, когда заданный параметр выходит из диапазона. Это легко сделано изнутри тела конструктора:
class A {
int x;
enum { MAX = 10 };
Вот любопытный. У меня есть класс A. У него есть элемент класса B, который я хочу инициализировать в конструкторе использования списка инициализаторов, например, SO:
Вот любопытный. У меня есть класс A. У него есть элемент класса B, который я хочу инициализировать в конструкторе использования списка инициализаторов, например, SO:
public MatchResult GetResult(int home, int away)
{
if ( home == away )
return MatchResult.Draw;
else if ( home > away )
return MatchResult.HomeWins;
else if ( home < away )
return MatchResult.AwayWins;