Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Потрепаться";
Текущий архив: 2005.01.09;
Скачать: [xml.tar.bz2];

Вниз

Неужели я так плохо знаю C++, или как это можно объяснить?   Найти похожие ветки 

 
ms   (2004-12-18 10:22) [0]

//  Файл ttt.h
//
#ifndef TTT_H
#define TTT_H
class TTT {
public:
void myFunc();
int l;
private:
double c;

};
#endif

// Файл ttt.cpp
//
#include "ttt.h"

void TTT::myFunc()
{
c = 26.9;
}

// MainDlg.h : header file
//

#pragma once

#include "afxcmn.h"
#include "afxwin.h"
#include <afxmt.h>
#include "ttt.h"

<...>

// MainDlg.cpp : implementation file
//

#include "stdafx.h"
#include "RenamerWizard.h"
#include "MainDlg.h"

Далее в этом модуле в каком-нибудь обработчике пишу:
TTT my;
my.l = 77;
my.myFunc();
-----------------
Результат компиляции:
-----------------
RenamerWizard error LNK2019: unresolved external symbol "public: void __thiscall TTT::myFunc(void)" (?myFunc@TTT@@QAEXXZ) referenced in function "public: __thiscall CMainDlg::CMainDlg(class CWnd *)" (??0CMainDlg@@QAE@PAVCWnd@@@Z)

RenamerWizard fatal error LNK1120: 1 unresolved externals

Ну в чем здесь может быть ошибка? Мой проект mfc приложения на VC++.NET


 
KSergey ©   (2004-12-18 10:43) [1]

Просто предположение:

Файл ttt.cpp не включен в проект


 
Ломброзо ©   (2004-12-18 10:43) [2]

Вставьте #include "stdafx.h" в ваш TTT.cpp

если не поможет, попробуйте не забыть написать для TTT public-конструктор


 
ms   (2004-12-18 10:49) [3]

Нельзя мне включать файл в проект, потому что одна функция(WaitForSingleObject, а то что выше это просто пример) работает неправильно если я включу файл в проект. Можно ли не включая в проект этот файл избавиться от такой ошибки?


 
Ломброзо ©   (2004-12-18 10:57) [4]

теоретически можно. А вообще, похоже, что компилятор просто ваш .cpp не видит. Включите директорию, где он лежит, в include path.


 
KSergey ©   (2004-12-18 11:32) [5]

> [4] Ломброзо ©   (18.12.04 10:57)
> теоретически можно. А вообще, похоже, что компилятор просто
> ваш .cpp не видит.

Дык и я о том же.

> [3] ms   (18.12.04 10:49)
> Нельзя мне включать файл в проект,

Т.е. это как?? Как-то мне не совсем понятно: либо файл и вписанное в него - будут в проекте и будут использоваться - либо нет.
А как именно - прописать пути (а есть ли это для файлов проекта? Чей-то я сомневаюсь, это же не дельфи) или включить в проект - код из этого модуля либо будет - либо нет. Если нет - то и использовать ничего нельзя.

А потому что-то я не пойму вашей проблемы.


 
ASMer   (2004-12-18 11:32) [6]

Засунь тело ксласса в h файл


 
KSergey ©   (2004-12-18 11:35) [7]

> [6] ASMer   (18.12.04 11:32)
> Засунь тело ксласса в h файл

Зачем?


 
begin...end ©   (2004-12-18 11:36) [8]

> [7] KSergey ©   (18.12.04 11:35)

> > Засунь тело ксласса в h файл
>
> Зачем?

За сунь :-)


 
ASMer   (2004-12-18 11:39) [9]

Так нада!


 
KSergey ©   (2004-12-18 11:49) [10]

> [9] ASMer   (18.12.04 11:39)
> Так нада!

Обман.


 
Verg ©   (2004-12-18 11:54) [11]

ну напиши так что ли...

class TTT {
public:
void myFunc() { c = 26.9; }
int l;
private:
double c;
};


 
ASMer   (2004-12-18 11:58) [12]

Короче мля самый короткий путь для того чтобы засунуть
функциональность какую то в проект VS и приэтом не включать cpp
файл в проект это засунуть эту же функциональность в h файл
а cpp выкинуть на...
Я лично встречал несколько интересных библиотек сотстоящих
из одного h файла(вариация на тему Zip и XML парсер). Очень удобно так как нет никагоко гемора при работе с этой библиотекой как в VS так и g++


 
KSergey ©   (2004-12-18 12:03) [13]

А все же, мне любопытно: почему нельзя запихнуть cpp в проект и что изменится, если всю его функциональность перенести в h? Какая в итоге разница - где лежит исходник?? Вот что я не пойму...


 
ASMer   (2004-12-18 12:15) [14]

2KSergey
Во 1-x Запихнуть можно все...
Во 2-x Ни.. чего не измениться...
Компилисться может будет дольше
В 3-x Если cpp файл не включен в проект он нескомпилиться НИКОГДА
в отличии от h.
а разници где лежит исходник нет.
Могу токак заметить по своему опыту что лучше импользовать в проекте отностительные пути, а не абсолютные.


 
KSergey ©   (2004-12-18 12:20) [15]

> [14] ASMer   (18.12.04 12:15)

Но как же тогда быть с [3] ms   (18.12.04 10:49)?? Если в тексте какие-то проблемы -какая разница куда его запихать? Вот что мне не понятно...


 
ASMer   (2004-12-18 12:24) [16]

Да мля там явно не проекте дело

Не может WaitForSingleObject работать не правильно из-за того что включен файл в проект.

А насчет продлагаемого мной пути. Так он не включает h файл в проект. Вот!


 
KSergey ©   (2004-12-18 12:43) [17]

> [16] ASMer   (18.12.04 12:24)
> А насчет продлагаемого мной пути. Так он не включает h файл
> в проект.

Да безусловно, но код-то - все равно включает. Если в коде проблемы - какая разница?
Впрочем, это не важно, думаю ;)


 
марсианин ©   (2004-12-18 12:47) [18]


> потому что одна функция(WaitForSingleObject, а то что выше
> это просто пример) работает неправильно....

а какие проблемы с WaitForSingleObject?


 
Igorek ©   (2004-12-18 13:38) [19]

KSergey ©   (18.12.04 12:03) [13]
и что изменится, если всю его функциональность перенести в h? Какая в итоге разница - где лежит исходник??

- инкапсуляция
- скорость компиляции
ms   (18.12.04 10:22)

> Результат компиляции:...

Читайте доки - они рулез.


 
KSergey ©   (2004-12-18 14:22) [20]

> [19] Igorek ©   (18.12.04 13:38)
> KSergey ©   (18.12.04 12:03) [13]
> и что изменится, если всю его функциональность перенести
> в h? Какая в итоге разница - где лежит исходник??
> - инкапсуляция

При чем тут это? Хотя ладно, подумаю еще, мож. и правда что недогоняю...

А вообще, я этот вопрос задавал исключительно в разрезе вопроса автора, а не "вообще чем отличается исходник в .h и в .cpp" ;)



Страницы: 1 вся ветка

Форум: "Потрепаться";
Текущий архив: 2005.01.09;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.49 MB
Время: 0.035 c
1-1103616251
pika
2004-12-21 11:04
2005.01.09
Прозрачный форма !!!


1-1103703634
Симонова Ирина
2004-12-22 11:20
2005.01.09
AcrobatReader


1-1103631124
Cosinus
2004-12-21 15:12
2005.01.09
Есть ли стандартная функция для получения нижнего слова?


14-1103294319
Nat
2004-12-17 17:38
2005.01.09
Работа для программиста Delphi.


1-1103581319
karachi
2004-12-21 01:21
2005.01.09
Не работает печать в QReport





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский