У меня есть член класса A в моем собственном классе, который конструктор принимает несколько параметров. Im пересылает параметры моего собственного класса конструктору класса A. Но важно, чтобы эти параметры были правильными, поэтому я должен проверить их перед тем, как собрать член A. И вот проблема: Я мог бы оставить член в член списка инициализации, эффективно вызывающий конструктор по умолчанию. После проверок в конструкторе я мог бы затем вызвать конструктор `` `` `` `` `` `` `` `` `` `` `` `` `` `` `` `` `` `` `` `` `` `'' '' '' '' ''` `` `` `` Хотя это вызывает ошибку, поскольку деструктор A является закрытым.Выполнять проверки перед списком инициализации
Как это решить?
MyClass::MyClass(int someParam) : otherMember(2){
//checks for someParam
member = A(someParam); // <- produces error
}
Поговорите с автором класса 'A' и принудите ее к тому, чтобы собственный конструктор' A' вел себя разумно в случае недопустимых значений параметров. –
Было бы приемлемо построить 'A', а затем проверить после факта? – Cameron
Я действительно пытался убедить Sun сделать это приемлемым на Java, но они отказались. Это немного проще обмануть на Java, потому что вы можете вызвать один конструктор из другого. – Neil