Предыдущая тема :: Следующая тема |
Автор |
Сообщение |
sniper::p
Зарегистрирован: 04.10.2005 Сообщения: 237 Откуда: rus/73
|
Добавлено: Сб Авг 12 2006 23:22 Заголовок сообщения: Buenas noches, amigos! :) |
|
|
Buenas noches, amigos!
В общем, цепляю к проекту в VS2003 (С++) 2 модуля (2 *.cpp и 2 *.h). В каждом аше объявлено по 1-му классу. В реализации 2-го используется оператор из 1-го класса. Компилируется это дело без проблем, но как доходит до сборки, линковщик выдает ошибку про unresolved external symbol ... и т.д. как раз про этот оператор. И вообще, ни один метод (ессно, и все операторы) линковщик не может найти (реализацию). Что за дрянь? _________________ Нет предела совершенствованию |
|
Вернуться к началу |
|
|
Kefir
Зарегистрирован: 16.04.2005 Сообщения: 443 Откуда: Пермь
|
Добавлено: Пн Авг 14 2006 07:44 Заголовок сообщения: |
|
|
А 1й *.h ты во 2й включил? Попробуй указать во 2м етот оператор со словом extern. _________________ Самоловских Виталий aka Kefir |
|
Вернуться к началу |
|
|
kolobok0
Зарегистрирован: 22.04.2005 Сообщения: 253 Откуда: Мсква
|
Добавлено: Пн Авг 14 2006 13:49 Заголовок сообщения: Re: Buenas noches, amigos! :) |
|
|
sniper::p писал(а): | Buenas noches, amigos!
В общем, цепляю к проекту в 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) } | И все такое По-моему, вполне достаточно, и ситуация довольно типичная Kefir, модуль - отдельная часть программы, выделенная в отдельный сипипи с ашем. Меня так учили _________________ Нет предела совершенствованию |
|
Вернуться к началу |
|
|
kolobok0
Зарегистрирован: 22.04.2005 Сообщения: 253 Откуда: Мсква
|
Добавлено: Ср Авг 16 2006 16:22 Заголовок сообщения: |
|
|
sniper::p писал(а): | ...По-моему, вполне достаточно, и ситуация довольно типичная ... |
ну не совсем достаточная...и нуна было запостить код из компилятора, а не ручками набивать... ну да лано... дык вот ниже приведённый код рабочий... приводите к нему поэтапно и найдёте свою ошибку..
Код: |
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 модуля, просто подключенные к проекту) не проходит. Почему классы не видят реализацию своих методов? Может, в настройках что-то не так... А то, что ручками набивал - простое укорачивание и переобдумывание. В один файл все засунуть - тоже не решение проблемы. В таком случае, я мог бы все методы класса уже в заголовке реализовать, ну и как бы это выглядело? _________________ Нет предела совершенствованию |
|
Вернуться к началу |
|
|
kolobok0
Зарегистрирован: 22.04.2005 Сообщения: 253 Откуда: Мсква
|
Добавлено: Чт Авг 17 2006 12:14 Заголовок сообщения: |
|
|
sniper::p писал(а): | ...В один файл все засунуть - тоже не решение проблемы. В таком случае, я мог бы все методы класса уже в заголовке реализовать, ну и как бы это выглядело? |
1) Вы не так меня поняли... Я Вам не предлагал засунуть всё в один файл... Я предложил способ отыскать Вашу кривизну. Не хотите - сидите думайте, гадайте...Можно с бубном по часовой стрелке попрыгать на одной ноге - не знаю, может и поможет...
2) То, что Вы набили ручками - это не есть Ваш код... Это уже другой код. И именно он - РАБОТАЕТ...
3) Делать за Вас такие элементарные вещи как запись кода в разных файлах - извините, это уже не ко мне... Если не можете это сделать - так и скажите, я не знаю как это сделать. Вот пытаюсь - пишу так то и так то - не выходит... Вам помогут, подскажут. А ждать пока конфету Вам развернут и подсунут под нос, если Вам это НЕ НАДО - считаю, что это уже выходит за рамки "помощи".
4) Если не можете и хочеться - платите. Вам всё сделают...
удачи Вам
(круглый)
ЗЫ
Дурдом... Растащить код по разным файлам уже лень... В сад... |
|
Вернуться к началу |
|
|
sniper::p
Зарегистрирован: 04.10.2005 Сообщения: 237 Откуда: rus/73
|
Добавлено: Чт Авг 17 2006 20:59 Заголовок сообщения: |
|
|
И все равно спасибо Но "дурдом", "лень", "растащить" - немного не про меня Я как раз пытаюсь разобраться _________________ Нет предела совершенствованию |
|
Вернуться к началу |
|
|
|