Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / C++ [игнор отключен] [закрыт для гостей] / переменную хочу / 6 сообщений из 6, страница 1 из 1
24.08.2004, 00:10
    #32662096
Vss
Vss
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
переменную хочу
извиняюсь глупый вопрос, но то ли со мной что-то не то, то ли ночь на дворе
MFC
В классе CGdocDoc есть переменная Public: CString m_string
Хочу достучаться до нее из другого класса CGdocView
Пытаюсь так:
Определяю функцию в CGdocDoc
public:
static void AAA(CString& n);

void CGdocDoc::AAA(CString & n)
{
//TODO: return statement
n=m_string; (если тут ="valuetemp" то все ок, как только переменная валится)
}
CGdocView:
public:
CString Name;

Вызов из CGdocView:
CGdocDoc::AAA(Name);
pDC->TextOut(0,0,Name);
Валится с error C2440: '=' : cannot convert from '' to 'CString'
Вообще такой способ мне не нравится. На ночь глядя ниче в голову другого не приходит. Таких переменных(и массивов) пруд пруди, и для каждой функцию, да переменную в обоих классах. Неправильно как-то. Мож другие есть? Через объявление дружественного класса чет не проходит. Не видит и все тут.
...
Рейтинг: 0 / 0
24.08.2004, 01:06
    #32662119
Lepsik
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
переменную хочу
--CGdocDoc::AAA(Name);

а где сам реальный обьект ?
в данном случае вызов по адресу 0000 - конечно валится будет.
если статическая функция - то в нее надо ссылку на обьект передавать

void CGdocDoc::AAA(CString & n, CGdocDoc &obj)
{
n=obj.m_string;
}
...
Рейтинг: 0 / 0
24.08.2004, 02:26
    #32662128
Дмитрий_AKB
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
переменную хочу
Есть, функция GetDocument, создай простое MDI или SDI приложение, и посмотри как она там реализована.
...
Рейтинг: 0 / 0
24.08.2004, 02:38
    #32662129
Дмитрий_AKB
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
переменную хочу
Только что посмотрел, в View есть вертуальная функция GetDocument().
Мой пример :
CDimaDoc* CDimaView::GetDocument() // non-debug version is inline
{
ASSERT(m_pDocument->IsKindOf(RUNTIME_CLASS(CDimaDoc)));
return (CDimaDoc*)m_pDocument;
}
И влебой фенкции представления пишишь :
CDimaDoc* m_doc = GetDocument();
А потом обращайся к любой переменной документа :
m_doc->m_string="ой-ля-ля".
...
Рейтинг: 0 / 0
24.08.2004, 08:12
    #32662208
Vss
Vss
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
переменную хочу
2Дмитрий_AKB
Есть, конечно есть GetDocument()! Даже строка уже была
CGdocDoc* pDoc = GetDocument(); Это было первой попыткой.
Но сбило вот что: набираю pDoc-> .. Жду. Вылезает доступным параметром Только интерфейс GIDoc. И ни одной функции и ни одной переменной. Вчера мне не показалось это странным, а повело по поиску иного пути. Сегодня вот думаю, толи глюк какой, толи так надо, а если надо , то неудобно. Что их всех наизусть помнить или лазить каждый раз в тело соседнего класса за названием переменных. Щас до работы дойду, поробую нагло указать pDoc->m_string.
p/s/ Спасибо Дмитрий
...
Рейтинг: 0 / 0
24.08.2004, 10:07
    #32662370
Дмитрий_AKB
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
переменную хочу
" Вылезает доступным параметром Только интерфейс GIDoc. И ни одной функции и ни одной переменной", А это унего глюк такой, не раз уж был.
...
Рейтинг: 0 / 0
Форумы / C++ [игнор отключен] [закрыт для гостей] / переменную хочу / 6 сообщений из 6, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]