Вопрос № 62087: Здравствуйте.
Компилятор и линковщик C++ из Microsoft Visual Studio 2005
Объявляю некоторый класс в файле TTestClass.h
Реализовываю класс в файле TTestClass.cpp (Пример показан в приложении).
Линковщик всегда выдает ошибки типа: unres...Вопрос № 62094: Доброго времени суток уважаемые эксперты. Нужно удалить все комментарии из файлов и записать данные открытия,закратия файла в отдельный файл. Допустим символ="//" , а как быть дальше?? Как дойти до конца строки и удалить эту строку ??...Вопрос № 62162: Здравствуйте, уважаемые эксперты. Мне необходимо написать многопоточное приложение. Для создания нового
потока использую функцию _beginthread(), но при компиляции выдает ошибку "_beginthread : undeclared identifier", хотя заголовочные файлы...Вопрос № 62182: Здравствуйте, уважаемые эксперты! Посоветуйте, пожалуйста, литературу по следующей проблеме. Задача стоит: сделать простенькую платку со светодиодами, которая би управлялась через com или usb(моргание диодов). Может, кто-то сталкивался? Заранее спаси...
Вопрос № 62.087
Здравствуйте.
Компилятор и линковщик C++ из Microsoft Visual Studio 2005
Объявляю некоторый класс в файле TTestClass.h
Реализовываю класс в файле TTestClass.cpp (Пример показан в приложении).
Линковщик всегда выдает ошибки типа: unresolved LNK...(не находит реализации данных функций)
Я пробовал изменять заголовки функций и некоторыми другими способами, но тип ошибки не менялся.
Как это исправить?
P.S. Если все функции реализовывать сразу при их объявлении, то все прекрасно работает.
Отвечает: Хватов Сергей
Здравствуйте, Pranovich Ivan Vladimirovich!
Вы пропустили inline
Я не знаю, возможны ли вообще не-inline методы для template классов - нигде не нашёл ни запрета, ни примера реализации, но даже если они возможны, то надо писать отдельные реализации для всех используемых T
Приложение:
Ответ отправил: Хватов Сергей (статус: 8-ой класс)
Ответ отправлен: 10.11.2006, 16:25 Оценка за ответ: 5
Отвечает: Melamed
Здравствуйте, Pranovich Ivan Vladimirovich!
Я рекомендую реализацию шаблонного класса делать в h файле. Это связано с тем, что фактически
компилятор для каждого типа, указанного в шаблоне в угловых скобках созд
1072;ет свой собственный класс, например, если в вашем проекте объявлены типы
typedef <int> TTest IntTest;
и
typedef <char> TTest CharTest;
то компилятор создаст два класса для целых чисел и символов, и их коды будут находится
в разных местах кодового сегмента программы.
Это является обратная сторона применения шаблонов.
Ответ отправил: Melamed (статус: 7-ой класс)
Ответ отправлен: 10.11.2006, 17:34 Оценка за ответ: 5
Вопрос № 62.094
Доброго времени суток уважаемые эксперты. Нужно удалить все комментарии из файлов и записать данные открытия,закратия файла в отдельный файл. Допустим символ="//" , а как быть дальше?? Как дойти до конца строки и удалить эту строку ??
Приложение:
Отправлен: 10.11.2006, 17:57
Вопрос задал: Respect (статус: Посетитель)
Всего ответов: 2 Мини-форум вопроса >>> (сообщений: 1)
Отвечает: Sling
Здравствуйте, Respect!
Всё достаточно просто, причём решить можно эту проблему как минимум двумя способами.
Первый (см код в приложении) состоит в том, что считываем из исходного файла по одному символу и тут же записываем этот символ в лог. Если встречаем "//", то дальше пока не встретим символ с кодом 10 (признак конца строки), ничего в лог не пишем. Это по сути и всё.
Второй метод - читать файл построчно и использовать функции для работы со строками (поиск, обрезание :) ). К сожалению, я их не помню, а поискать в справке вы их можете с тем же успехом, что и я.
PS: В коде я работаю с файлами, использую возможности С++, а не С, что и вам рекомендую - это действительно удобно.
Приложение:
--------- The fear of blood tends to create fear for the flesh
Ответ отправил: Sling (статус: 3-ий класс)
Ответ отправлен: 11.11.2006, 02:35
Отвечает: dentist
Здравствуйте, Respect!
файл читается построчно (fgets()).
строка проверяется на наличие признака комментария.
например функцией strstr().
тупо обрезаем строку и пишем в файл.
приблезительно это выглядит как в приложении...
Приложение:
--------- "Software is like sex, it's better then it's free" (c) Linus Torvalds
Ответ отправил: dentist (статус: 6-ой класс)
Ответ отправлен: 11.11.2006, 13:32
Вопрос № 62.162
Здравствуйте, уважаемые эксперты. Мне необходимо написать многопоточное приложение. Для создания нового потока использую функцию _beginthread(), но при компиляции выдает ошибку "_beginthread : undeclared identifier", хотя заголовочные файлы windows.h и process.h я подключаю. Не могу понять, в чем дело.
Хотя это и не совсем решает Вашу проблему, попробуйте использовать CreateThread
Ответ отправил: Mech@nic (статус: 1-ый класс)
Ответ отправлен: 11.11.2006, 11:03
Отвечает: dentist
Здравствуйте, Говорищев Максим Александрович!
если пишете под винду то используйте CreateThread() и ExitTherad()
если под *nix то fork() вам в руки ;)
--------- "Software is like sex, it's better then it's free" (c) Linus Torvalds
Ответ отправил: dentist (статус: 6-ой класс)
Ответ отправлен: 11.11.2006, 13:43
Вопрос № 62.182
Здравствуйте, уважаемые эксперты! Посоветуйте, пожалуйста, литературу по следующей проблеме. Задача стоит: сделать простенькую платку со светодиодами, которая би управлялась через com или usb(моргание диодов). Может, кто-то сталкивался? Заранее спасибо!
Отвечает: Хватов Сергей
Здравствуйте, Андрющенко Вячеслав Васильевич!
Ваш вопрос не имеет отношения к C/C++ или другим языкам программирования.
Но если вы хотите, чтобы плата была простенькая, то ее надо подключать либо к к порту lpt, либо к i2c (если вы его у себя найдёте, хотя он на самом деле обычно есть и возможно не один)
Еще некоторые производители материнок ставят на них линейки светодиодов (MSI очень любит такое), которые управляются простой записью по соответствующему адресу i/o. Правда на живой системе это тоже не слишком просто.
Ответ отправил: Хватов Сергей (статус: 8-ой класс)
Ответ отправлен: 11.11.2006, 15:28
Берешь диод, припаиваешь к разъему порта: один конец к среднему контакту на широкой стороне (в зависимости от размера разьема это будет 7-й или 5-й PIN).
Второй конец припаиваешь к контакту номер 4.
Теперь с этим диодом можно работать из Си (адреса для COM1):
Поджечь светодоид - outportb(0x3f8+4,inportb(0x3f8+4)&0xc0);
погасить - outportb(0x3f8+4,inportb(0x3f8+4)|3);
Прочитать советую из Techhelp следующие "главы": "cables & pinouts" "serial ports".
--------- Открыть глаза навстречу солнцу
Ответ отправил: ADSota (статус: Специалист)
Ответ отправлен: 13.11.2006, 15:19 Оценка за ответ: 5