Отправляет email-рассылки с помощью сервиса Sendsay
  Все выпуски  

RusFAQ.ru: Программирование на C / C++


РАССЫЛКИ ПОРТАЛА RUSFAQ.RU

/ КОМПЬЮТЕРЫ И ПО / Языки программирования / C/C++

Выпуск № 846
от 11.09.2007, 20:05

Администратор:Калашников О.А.
В рассылке:Подписчиков: 498, Экспертов: 69
В номере:Вопросов: 3, Ответов: 3


Вопрос № 101002: Здравствуйте, глубокоуважаемые эксперты! Обращаюсь к вам со следующей проблеммой. Есть код: class Base { public: Base(){...} virtual ~Base(){...}; }; class Derived : public Base { public: Derived(){...}<...
Вопрос № 101074: Здравствуйте, глубокоуважаемые эксперты! Не успел я разобраться с предыдущим моим вопросом, как возник новый. Теперь уже при разборе книжки Скотта Мейерса "Наиболее эффективное использование С++" возникла следующяя непонятность...
Вопрос № 101103: Добрый день, господа эксперты, есть проблемка, которую ни как не могу решить сам. Подскажите как правильно составить код, чтобы таблица из моей базы данных открывалась в Excelе. Сам я попробовал поэкспериментировать, но при всех моих попытках в Excel...

Вопрос № 101.002
Здравствуйте, глубокоуважаемые эксперты!
Обращаюсь к вам со следующей проблеммой. Есть код:
class Base
{
public:
Base(){...}
virtual ~Base(){...};
};
class Derived : public Base
{
public:
Derived(){...}
~Derived(){...}
};
............
int main(int argc, char* argv[])
{
Base *bp,b_ob;
Derived *dp,d_ob;
bp=&d_ob;
dp=dynamic_cast<Derived *>(bp);
................
}
Взял его из книжки Г.Шилдта "Полный справочник по С++. Четвёртое издание". Захотел откомпилировать посредством Visual Studio 2003. При этом на этапе выполнения выдаётся следующее сообщение:
"This application has requested the Rumtime to terminate it in an unusual way. Please contact the application's support team for more information."
Что здесь происходит и как мне выйти из сложившегося положения?

Заранее, огромное спасибо.
Отправлен: 06.09.2007, 00:29
Вопрос задал: VSP (статус: Посетитель)
Всего ответов: 1
Мини-форум вопроса >>> (сообщений: 0)

Отвечает: Терсков Сергей
Здравствуйте, VSP!
Скомпилировал ваш код под MS VS 2005, и никаких проблем он не вызвал, так что проблема именно в самой студии или настройках проекта. Поиск в Google выдал следущую ссылку

http://support.microsoft.com/kb/884538

Хотя там речь идет о Microsoft Visual C++ 6.0, думаю что ситуация подобная...
Ответ отправил: Терсков Сергей (статус: Студент)
Ответ отправлен: 06.09.2007, 02:24
Оценка за ответ: 5
Комментарий оценки:
Большое спасибо за столь краткий и в то же время детальный ответ


Вопрос № 101.074
Здравствуйте, глубокоуважаемые эксперты!

Не успел я разобраться с предыдущим моим вопросом, как возник новый.
Теперь уже при разборе книжки Скотта Мейерса "Наиболее эффективное использование С++" возникла следующяя непонятность. В его "Правиле 5. Опасайтесь определяемых пользователем функций преобразования типов" были приведены следующие две конструкции:
------------------------------------------------------------------------------------------------
______(1)______
class Rational{
public:
............
operator double() const;
};
.............
Rational r(1/2);
double d=0.5*r;
//либо:
Rational r(1/2);
cout<<r;

______(2)______
class Rational{
public:
............
double asDouble() const;
};
.............
Rational r(1/2);
cout<<r.asDouble();
------------------------------------------------------------------------------------------------

Оба эти случая должны были (по Мейерсу) в результате давать вещественное значение. Однако на своей Visual Studio 2003 я получаю следующую ошибки:
а)Для первого случая:
(а).1:
"c:documents and settingsuserмои документыvisual studio
projects ranslatorre ranslatorre.cpp(88): error C2664:
'Derived::Derived(const Derived &)' : cannot convert parameter 1
from 'int' to 'const Derived &' "
(эта ошибка вроде бы справедлива, т.к. при инициализации объекта, вызывающего конструктор с параметрами, при том, что такого нет, вызывается конструктор копирования, необходимый тип параметра которого не совпадает с параметром в вызове "Rational r(1/2);" )

(а).2:
Если я добавляю конструктор в double-параметром, по выдаётся следующее сообщение:

"TranslatorRE error LNK2019: unresolved external symbol "public:
__thiscall Derived::operator double(void)const
" (??BDerived@@QBENXZ) referenced in function _main"

б)Для второго случая:
(б).1: аналогичное сообщению в (а).1;
(б).2:
"TranslatorRE error LNK2019: unresolved external symbol
"public: double __thiscall Derived::asDuuble(void)const"
(?asDuuble@Derived@@QBENXZ) referenced in function _main"

По сему у меня вопрос: может эти примеры Мейерса справедливы при каких-то дополнительный условиях или я где-то, в чём-то ошибся? Что необходимо сделать, чтобы всё заработало?

Извиняюсь на столь длинный экскурс в суть моей проблеммы.

И так же, заранее огромное спасибо!
Отправлен: 06.09.2007, 13:45
Вопрос задал: VSP (статус: Посетитель)
Всего ответов: 1
Мини-форум вопроса >>> (сообщений: 1)

Отвечает: Aristos
Здравствуйте, VSP!

Эти примеры являются, в некотором роде, псевдокодом. В них показано только значимые (для рассмастриваемого вопроса) детали классов, и предполагается, что для читателя не составит труда дополнить классы корректным внутренним содержанием и реализазовать необходимые функции (например конструкторы, деструктор, опрераторы присваивания и сравнения).

В приложении рабочее приложение иллюстрирующее пример из книги.

Приложение:

Ответ отправил: Aristos (статус: 5-ый класс)
Ответ отправлен: 06.09.2007, 14:20
Оценка за ответ: 5
Комментарий оценки:
Спасибо огромное! Теперь всё понятно.


Вопрос № 101.103
Добрый день, господа эксперты, есть проблемка, которую ни как не могу решить сам. Подскажите как правильно составить код, чтобы таблица из моей базы данных открывалась в Excelе. Сам я попробовал поэкспериментировать, но при всех моих попытках в Excel подгружается не
вся таблица, а лишь та ячейка на которой стоит курсор.
Заранее спасибо.
Отправлен: 06.09.2007, 20:00
Вопрос задал: Boio (статус: Посетитель)
Всего ответов: 1
Мини-форум вопроса >>> (сообщений: 0)

Отвечает: Виктор Пырлик
Здравствуйте, Boio!

Используйте конструкцию


Table->DisableControls();
Table->First();
while(! Table->Eof)
{
for(int i=0; i < Table->FieldCount; i++)
{
/*обрабатывает Excel = Table->Fiels[i]->Value*/
}
Table->Next();
}
Table->EnableControls();

---------
Если ничего не помогло - надо читать инструкцию
Ответ отправил: Виктор Пырлик (статус: Студент)
Ответ отправлен: 06.09.2007, 20:34


Отправить вопрос экспертам этой рассылки

Приложение (если необходимо):

* Код программы, выдержки из закона и т.п. дополнение к вопросу.
Эта информация будет отображена в аналогичном окне как есть.

Обратите внимание!
Вопрос будет отправлен всем экспертам данной рассылки!

Для того, чтобы отправить вопрос выбранным экспертам этой рассылки или
экспертам другой рассылки портала RusFAQ.ru, зайдите непосредственно на RusFAQ.ru.


Форма НЕ работает в почтовых программах The BAT! и MS Outlook (кроме версии 2003+)!
Чтобы отправить вопрос, откройте это письмо в браузере или зайдите на сайт RusFAQ.ru.


© 2001-2007, Портал RusFAQ.ru, Россия, Москва.
Авторское право: ООО "Мастер-Эксперт Про"
Техподдержка портала, тел.: +7 (926) 535-23-31
Хостинг: "Московский хостер"
Поддержка: "Московский дизайнер"
Авторские права | Реклама на портале
Версия системы: 4.58 от 10.09.2007
Яндекс Rambler's Top100
RusFAQ.ru | MosHoster.ru | MosDesigner.ru | RusIRC.ru
Kalashnikoff.ru | RadioLeader.ru | RusFUCK.ru

В избранное