Nếu chúng ta đang nói về tình huống sai lầm, ném một ngoại lệ là giải pháp thích hợp.
#include<exception>
Object * GenerateObject(int i)
{
if (i < 0)
throw std::out_of_range("i");
return new Object(i);
}
int main(int argc, char * argv[])
{
try
{
Object * obj = GenerateObject(-1);
// Succeeded
return 0;
}
catch (std::exception & e)
{
// Failed, exiting with error value
return 1;
}
}
Nếu giá trị rỗng được cho phép, bạn có thể chỉ định giá trị cụ thể cho lớp này, ví dụ:
class Rectangle
{
private:
int left, top, width, height;
public:
Rectangle(l, t, w, h)
{
left = l;
top = t;
width = w;
height = h;
}
public static Rectangle empty;
}
Rectangle Rectangle::empty = Rectangle(0, 0, -1, -1);
// ...
Rectangle DoSth(int i)
{
// i < 0 is NOT considered an error here
if (i < 0)
return Rectangle::empty;
// Further processing
}
ném ngoại lệ http://www.cplusplus.com/doc/tutorial/exceptions/ – Tschallacka
ném một ngoại lệ? – PlasmaHH
@MichaelDibbets. Cảm ơn, tôi đã không sử dụng điều đó trước đây. Nếu bạn viết nó như một câu trả lời ngắn, tôi sẽ đánh dấu nó là được chấp nhận. – danijar