Re[14]: проблема : error C2248
От: green.nsk  
Дата: 15.11.06 06:08
Оценка:
а где стандарт говорит обратное?
Posted via RSDN NNTP Server 2.0
Re: проблема : error C2248
От: green.nsk  
Дата: 15.11.06 06:08
Оценка:
Думаю, самый простой выход — объявить деструктор public и страться нигде
не удалять объект вручную А дело, наверное, в том, что пкомпилер
порождает код деинициализации, из котрого деструктор "не виден".

В стандарте я нашёл только такое упоминание об видимости деструктора
(12.4.10):
[quote]A program is ill-formed if the destructor for an object is
implicitly used and it is not accessible.[/quote]
Posted via RSDN NNTP Server 2.0
Re[2]: проблема : error C2248
От: green.nsk  
Дата: 15.11.06 09:04
Оценка:
> В стандарте я нашёл только такое упоминание об видимости деструктора
> (12.4.10):
> [quote]A program is ill-formed if the destructor for an object is
> implicitly used and it is not accessible.[/quote]

Хотя я ошибся, это в черночике стандарта от 97 года.
В самом стандарте написано, что деструктор должен быть доступен в точке
объявления переменной. Но видимо msvc6 следует тому, что было написано в
черновике и лучший выход (если забыть о возможности смены компилятора) —
оставить конструктор приватным и сделать публичным деструктор.
Posted via RSDN NNTP Server 2.0
Re[13]: проблема : error C2248
От: DENIVA Россия http://www.uml3.ru
Дата: 15.11.06 09:24
Оценка:
Здравствуйте, L2-Max, Вы писали:

LM>Здравствуйте, L2-Max, Вы писали:


LM>Кстати, вы можете определить статическую переменную типа вашего класса гденибудь в скопе срр файла, получите аналогичную ошибку только о конструкторе.


ну с конструктором понятно. Это же singleton.
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Re[3]: проблема : error C2248
От: DENIVA Россия http://www.uml3.ru
Дата: 15.11.06 09:24
Оценка:
Здравствуйте, green.nsk, Вы писали:

>> В стандарте я нашёл только такое упоминание об видимости деструктора

>> (12.4.10):
>> [quote]A program is ill-formed if the destructor for an object is
>> implicitly used and it is not accessible.[/quote]

GN>Хотя я ошибся, это в черночике стандарта от 97 года.

GN>В самом стандарте написано, что деструктор должен быть доступен в точке
GN>объявления переменной. Но видимо msvc6 следует тому, что было написано в
GN>черновике и лучший выход (если забыть о возможности смены компилятора) —
GN>оставить конструктор приватным и сделать публичным деструктор.

Я больше чем уверен — bug в компиляторе. Просто может патчи какие-есть? вроде у меня последний sp для VS стоит, но все равно проблема остается
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Re[4]: проблема : error C2248
От: L2-Max Украина  
Дата: 15.11.06 10:25
Оценка:
Здравствуйте, DENIVA, Вы писали:

DEN>Здравствуйте, green.nsk, Вы писали:


>>> В стандарте я нашёл только такое упоминание об видимости деструктора

>>> (12.4.10):
>>> [quote]A program is ill-formed if the destructor for an object is
>>> implicitly used and it is not accessible.[/quote]

GN>>Хотя я ошибся, это в черночике стандарта от 97 года.

GN>>В самом стандарте написано, что деструктор должен быть доступен в точке
GN>>объявления переменной. Но видимо msvc6 следует тому, что было написано в
GN>>черновике и лучший выход (если забыть о возможности смены компилятора) —
GN>>оставить конструктор приватным и сделать публичным деструктор.

DEN>Я больше чем уверен — bug в компиляторе. Просто может патчи какие-есть? вроде у меня последний sp для VS стоит, но все равно проблема остается


Проблем, в этом плане, в компиляторе нет. Он правильно ругается.
Если конструктор приватный:
Мы не можем создавать объект не методом-членом этого класса либо если это не друг этого класса. Глобальный скоп по определению не может являться ни другом ни членом класса, следовательно мы никогда не сможем создать этот объект глобальным скопом.
С деструктором тоже самое, удалиться он скопом также не сможет если деструктор не паблик. Так что вот ...
L2-Max
Re[5]: проблема : error C2248
От: DENIVA Россия http://www.uml3.ru
Дата: 15.11.06 10:39
Оценка:
Здравствуйте, L2-Max, Вы писали:

LM>Здравствуйте, DENIVA, Вы писали:


DEN>>Здравствуйте, green.nsk, Вы писали:


DEN>>Я больше чем уверен — bug в компиляторе. Просто может патчи какие-есть? вроде у меня последний sp для VS стоит, но все равно проблема остается


LM>Проблем, в этом плане, в компиляторе нет. Он правильно ругается.

LM>Если конструктор приватный:
LM>Мы не можем создавать объект не методом-членом этого класса либо если это не друг этого класса. Глобальный скоп по определению не может являться ни другом ни членом класса, следовательно мы никогда не сможем создать этот объект глобальным скопом.
LM>С деструктором тоже самое, удалиться он скопом также не сможет если деструктор не паблик. Так что вот ...

почитай верние топики. В VS 2003 все работает. Эта проблема только в VS 6.0
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Re[6]: проблема : error C2248
От: L2-Max Украина  
Дата: 15.11.06 10:45
Оценка: -1
Здравствуйте, DENIVA, Вы писали:

DEN>Здравствуйте, L2-Max, Вы писали:


LM>>Здравствуйте, DENIVA, Вы писали:


DEN>>>Здравствуйте, green.nsk, Вы писали:


DEN>>>Я больше чем уверен — bug в компиляторе. Просто может патчи какие-есть? вроде у меня последний sp для VS стоит, но все равно проблема остается


LM>>Проблем, в этом плане, в компиляторе нет. Он правильно ругается.

LM>>Если конструктор приватный:
LM>>Мы не можем создавать объект не методом-членом этого класса либо если это не друг этого класса. Глобальный скоп по определению не может являться ни другом ни членом класса, следовательно мы никогда не сможем создать этот объект глобальным скопом.
LM>>С деструктором тоже самое, удалиться он скопом также не сможет если деструктор не паблик. Так что вот ...

DEN>почитай верние топики. В VS 2003 все работает. Эта проблема только в VS 6.0


Проблема VS6 в том, что он придерживается стандарта ? Кстати, все студии позволяют видеть индексную переменную оператора for в следующем скопе, а вот GCC не позволяет — значит он имеет проблемы ?

Кстати, по поводу того что в VS2003 нормально тоже сомневаюсь, не должен он такое допускать. Скорее всего, что создавали объект динамически и не удаляли. (под рукой нет VS2003 проверить не могу).
L2-Max
Re[7]: проблема : error C2248
От: L2-Max Украина  
Дата: 15.11.06 10:48
Оценка:
Здравствуйте, L2-Max, Вы писали:

LM>Здравствуйте, DENIVA, Вы писали:


DEN>>Здравствуйте, L2-Max, Вы писали:


LM>>>Здравствуйте, DENIVA, Вы писали:


DEN>>>>Здравствуйте, green.nsk, Вы писали:


DEN>>>>Я больше чем уверен — bug в компиляторе. Просто может патчи какие-есть? вроде у меня последний sp для VS стоит, но все равно проблема остается


LM>>>Проблем, в этом плане, в компиляторе нет. Он правильно ругается.

LM>>>Если конструктор приватный:
LM>>>Мы не можем создавать объект не методом-членом этого класса либо если это не друг этого класса. Глобальный скоп по определению не может являться ни другом ни членом класса, следовательно мы никогда не сможем создать этот объект глобальным скопом.
LM>>>С деструктором тоже самое, удалиться он скопом также не сможет если деструктор не паблик. Так что вот ...

DEN>>почитай верние топики. В VS 2003 все работает. Эта проблема только в VS 6.0


В любом случае приведенный вами в пример синглтон не правильный, с точки зрения шаблонов проектирования.
L2-Max
Re[8]: проблема : error C2248
От: DENIVA Россия http://www.uml3.ru
Дата: 15.11.06 10:57
Оценка:
Здравствуйте, L2-Max, Вы писали:

LM>Здравствуйте, L2-Max, Вы писали:


LM>>Здравствуйте, DENIVA, Вы писали:


DEN>>>Здравствуйте, L2-Max, Вы писали:


LM>>>>Здравствуйте, DENIVA, Вы писали:


DEN>>>>>Здравствуйте, green.nsk, Вы писали:


DEN>>>>>Я больше чем уверен — bug в компиляторе. Просто может патчи какие-есть? вроде у меня последний sp для VS стоит, но все равно проблема остается


LM>>>>Проблем, в этом плане, в компиляторе нет. Он правильно ругается.

LM>>>>Если конструктор приватный:
LM>>>>Мы не можем создавать объект не методом-членом этого класса либо если это не друг этого класса. Глобальный скоп по определению не может являться ни другом ни членом класса, следовательно мы никогда не сможем создать этот объект глобальным скопом.
LM>>>>С деструктором тоже самое, удалиться он скопом также не сможет если деструктор не паблик. Так что вот ...

DEN>>>почитай верние топики. В VS 2003 все работает. Эта проблема только в VS 6.0


LM>В любом случае приведенный вами в пример синглтон не правильный, с точки зрения шаблонов проектирования.


Полный код тут — http://sourceforge.net/projects/quicktest

Интересно, а что же тут не правильно именно с точки зрения шаблонов проектирования?
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.