Logo Море(!) аналитической информации!
IT-консалтинг Software Engineering Программирование СУБД Безопасность Internet Сети Операционные системы Hardware
Архив форумов ЦИТФорума
Море(!) вопросов - Море(!) ответов
 
 FAQFAQ   ПоискПоиск   ПользователиПользователи   ГруппыГруппы   РегистрацияРегистрация 
 ПрофильПрофиль   Войти и проверить личные сообщенияВойти и проверить личные сообщения   ВходВход 
Как правильно задавать вопросы

Buenas noches, amigos! :)

 
Перейти:  
Этот форум закрыт, вы не можете писать новые сообщения и редактировать старые.   Эта тема закрыта, вы не можете писать ответы и редактировать сообщения.    Список форумов Архив форумов ЦИТФорума -> Программирование
Предыдущая тема :: Следующая тема  
Автор Сообщение
sniper::p



Зарегистрирован: 04.10.2005
Сообщения: 237
Откуда: rus/73

СообщениеДобавлено: Сб Авг 12 2006 23:22    Заголовок сообщения: Buenas noches, amigos! :) Ответить с цитатой

Buenas noches, amigos! Smile
В общем, цепляю к проекту в VS2003 (С++) 2 модуля (2 *.cpp и 2 *.h). В каждом аше объявлено по 1-му классу. В реализации 2-го используется оператор из 1-го класса. Компилируется это дело без проблем, но как доходит до сборки, линковщик выдает ошибку про unresolved external symbol ... и т.д. как раз про этот оператор. И вообще, ни один метод (ессно, и все операторы) линковщик не может найти (реализацию). Что за дрянь?
_________________
Нет предела совершенствованию
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Отправить e-mail
Kefir



Зарегистрирован: 16.04.2005
Сообщения: 443
Откуда: Пермь

СообщениеДобавлено: Пн Авг 14 2006 07:44    Заголовок сообщения: Ответить с цитатой

А 1й *.h ты во 2й включил? Попробуй указать во 2м етот оператор со словом extern.
_________________
Самоловских Виталий aka Kefir
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Отправить e-mail
kolobok0



Зарегистрирован: 22.04.2005
Сообщения: 253
Откуда: Мсква

СообщениеДобавлено: Пн Авг 14 2006 13:49    Заголовок сообщения: Re: Buenas noches, amigos! :) Ответить с цитатой

sniper::p писал(а):
Buenas noches, amigos! Smile
В общем, цепляю к проекту в VS2003 (С++) 2 модуля (2 *.cpp и 2 *.h). В каждом аше объявлено по 1-му классу. В реализации 2-го используется оператор из 1-го класса. Компилируется это дело без проблем, но как доходит до сборки, линковщик выдает ошибку про unresolved external symbol ... и т.д. как раз про этот оператор. И вообще, ни один метод (ессно, и все операторы) линковщик не может найти (реализацию). Что за дрянь?


1) обычно - "модулем" называют бинарный файл получаемый на выходе линковки. Если идёт речь о "cpp" и ашниках - то про них, обычно говорят исходные файлы, либо файл обьявления (ашник) файл реализации( си пи пишник)...
2) лечение зубов по инету - занятие весёлое, но мало интересное. Рекомендую в свои вопросы вставлять те кусочки кода, который вызывает у Вас не понимание. В данном контексте лучше сузить Ваш код до обьявлений классов и их метода (тот кто не линкуется). За одно и отсечёте (пока будете готовить выжимку) - кучу других проблем сами(!) и перепроверите свой код...

в Вашем вопросе вижу несколько возможных причин которые могут заставлять линковщик выдавать именно такую ругань...

с уважением
(круглый)
_________________
(круглый)
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
sniper::p



Зарегистрирован: 04.10.2005
Сообщения: 237
Откуда: rus/73

СообщениеДобавлено: Вт Авг 15 2006 19:56    Заголовок сообщения: Ответить с цитатой

Хм, хорошо, попробую.
Код:
// файл GVector.h
class GVector
{
  public:
    GVector &operator /= (double);
}
// GVector.cpp
#include "GVector.h"
GVector &GVector::operator /= (double) { // код }



// файл GMatrix.h
#include "GVector.h"
class GMatrix
{
  public:
    GVector operator * (const GMatrix &M, const GVector &v)
}

// GMatrix.cpp
#include "GMatrix.h"
GVector &GMatrix::operator * (const GMatrix &M, const GVector &v) { // код, использующий GVector::operator /= (double) }
И все такое Smile По-моему, вполне достаточно, и ситуация довольно типичная Smile Kefir, модуль - отдельная часть программы, выделенная в отдельный сипипи с ашем. Меня так учили Very Happy
_________________
Нет предела совершенствованию
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Отправить e-mail
kolobok0



Зарегистрирован: 22.04.2005
Сообщения: 253
Откуда: Мсква

СообщениеДобавлено: Ср Авг 16 2006 16:22    Заголовок сообщения: Ответить с цитатой

sniper::p писал(а):
...По-моему, вполне достаточно, и ситуация довольно типичная Smile ...


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


Код:


class GVector
{
public:
     GVector& operator /= (double);
};

GVector& GVector::operator /= (double) { return *this; } ;

class GMatrix
{
public:
     GVector& operator * (const GMatrix &M);
};


GVector& GMatrix::operator * (const GMatrix &M)
{
   // код, использующий GVector::operator /= (double)
   GVector v;
   double dd = 0;
   v /= dd;
   return v;
};


где то в программе...
   GMatrix mx;
и далее бла-бла-бла


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

удачи Вам
(круглый)
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
sniper::p



Зарегистрирован: 04.10.2005
Сообщения: 237
Откуда: rus/73

СообщениеДобавлено: Ср Авг 16 2006 21:51    Заголовок сообщения: Ответить с цитатой

Мне кажется, тут дело стоит в принципе: почему, в общем-то, типичная ситуация (2 модуля, просто подключенные к проекту) не проходит. Почему классы не видят реализацию своих методов? Может, в настройках что-то не так... А то, что ручками набивал - простое укорачивание и переобдумывание. В один файл все засунуть - тоже не решение проблемы. В таком случае, я мог бы все методы класса уже в заголовке реализовать, ну и как бы это выглядело? Very Happy
_________________
Нет предела совершенствованию
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Отправить e-mail
kolobok0



Зарегистрирован: 22.04.2005
Сообщения: 253
Откуда: Мсква

СообщениеДобавлено: Чт Авг 17 2006 12:14    Заголовок сообщения: Ответить с цитатой

sniper::p писал(а):
...В один файл все засунуть - тоже не решение проблемы. В таком случае, я мог бы все методы класса уже в заголовке реализовать, ну и как бы это выглядело? Very Happy


1) Вы не так меня поняли... Я Вам не предлагал засунуть всё в один файл... Я предложил способ отыскать Вашу кривизну. Не хотите - сидите думайте, гадайте...Можно с бубном по часовой стрелке попрыгать на одной ноге - не знаю, может и поможет...
2) То, что Вы набили ручками - это не есть Ваш код... Это уже другой код. И именно он - РАБОТАЕТ...
3) Делать за Вас такие элементарные вещи как запись кода в разных файлах - извините, это уже не ко мне... Если не можете это сделать - так и скажите, я не знаю как это сделать. Вот пытаюсь - пишу так то и так то - не выходит... Вам помогут, подскажут. А ждать пока конфету Вам развернут и подсунут под нос, если Вам это НЕ НАДО - считаю, что это уже выходит за рамки "помощи".
4) Если не можете и хочеться - платите. Вам всё сделают...


удачи Вам
(круглый)
ЗЫ
Дурдом... Растащить код по разным файлам уже лень... В сад...
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
sniper::p



Зарегистрирован: 04.10.2005
Сообщения: 237
Откуда: rus/73

СообщениеДобавлено: Чт Авг 17 2006 20:59    Заголовок сообщения: Ответить с цитатой

И все равно спасибо Smile Но "дурдом", "лень", "растащить" - немного не про меня Smile Я как раз пытаюсь разобраться Smile
_________________
Нет предела совершенствованию
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Отправить e-mail
Показать сообщения:   
Этот форум закрыт, вы не можете писать новые сообщения и редактировать старые.   Эта тема закрыта, вы не можете писать ответы и редактировать сообщения.    Список форумов Архив форумов ЦИТФорума -> Программирование Часовой пояс: GMT + 3
Страница 1 из 1

 
Перейти:  
Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах


Powered by phpBB © 2001, 2002 phpBB Group
Русская поддержка phpBB

 

IT-консалтинг Software Engineering Программирование СУБД Безопасность Internet Сети Операционные системы Hardware

Информация для рекламодателей PR-акции, размещение рекламы — adv@citforum.ru,
тел. +7 495 6608306, ICQ 232284597
Пресс-релизы — pr@citforum.ru
Послать комментарий
Информация для авторов
This Web server launched on February 24, 1997
Copyright © 1997-2000 CIT, © 2001-2006 CIT Forum
Внимание! Любой из материалов, опубликованных на этом сервере, не может быть воспроизведен в какой бы то ни было форме и какими бы то ни было средствами без письменного разрешения владельцев авторских прав. Подробнее...