MOPO3
Ай да дэдушка! Вах...
Команда клуба
Offline
Пол:
Холадна аднака!
|
|
« : 31-08-2004 11:05 » |
|
Допустим есть какой-то класс Test. у него есть паблик функция int GetTotalNumber(CString varname); Можно ли из другого класса добраться до этой функции, а конкретно получить возвращаемое ею значение ? ЗЫ. чую, что какую то чушь спросил :oops:
|
|
« Последнее редактирование: 01-12-2007 12:51 от Алексей1153++ »
|
Записан
|
MCP, MCAD, MCTS:Win, MCTS:Web
|
|
|
Serega
Гость
|
|
« Ответ #1 : 31-08-2004 11:28 » |
|
Конечно можно, нужно её вызвать
|
|
|
Записан
|
|
|
|
Алексей++
глобальный и пушистый
Глобальный модератор
Offline
Сообщений: 13
|
|
« Ответ #2 : 31-08-2004 11:37 » |
|
нет, почему чушь, можно если не создавался экземпляр этого класса, то вызвать можно так: Test::GetTotalNumber(...); но в классе функцию надо объявить как static class CTest { public: static int GetTotalNumber(CString varname); };
#include "Test.h"
int CTest::GetTotalNumber(CString varname) { return 1; }
#include "Test.h"
void CMyDlg::proc1() { int i = CTest::GetTotalNumber("rrr"); }
|
|
« Последнее редактирование: 01-12-2007 12:54 от Алексей1153++ »
|
Записан
|
|
|
|
Pu
Большой босс
Offline
78
|
|
« Ответ #3 : 31-08-2004 11:48 » |
|
Алексей1153, добавочка. static функция должна пользовать только static атрибуты класса, либо ей на вход дать указатель на объект класса. (Ну это и так ясно).
|
|
|
Записан
|
Насколько я опытен? Достаточно, чтобы понимать, что дураков нельзя заставить думать по–другому, но недостаточно, чтобы отказаться от попыток это сделать. (с) Артур Джонс
|
|
|
MOPO3
Ай да дэдушка! Вах...
Команда клуба
Offline
Пол:
Холадна аднака!
|
|
« Ответ #4 : 31-08-2004 11:58 » |
|
Понятненько. А вот это что за мигня error C2593: 'operator =' is ambiguous ?
|
|
|
Записан
|
MCP, MCAD, MCTS:Win, MCTS:Web
|
|
|
Serega
Гость
|
|
« Ответ #5 : 31-08-2004 12:05 » |
|
Код покажи
|
|
|
Записан
|
|
|
|
MOPO3
Ай да дэдушка! Вах...
Команда клуба
Offline
Пол:
Холадна аднака!
|
|
« Ответ #6 : 31-08-2004 12:08 » |
|
Делаю так : class Test { public : static void SetNumber(CString foo); static void GetNumber (CString foo2); } потом ) class Test2 { ..... void Test2::Procseed() { Test::SetNumber("lalala"); Test::GetNumber("blablabla"); } } Так нельзя ?
|
|
« Последнее редактирование: 01-12-2007 12:57 от Алексей1153++ »
|
Записан
|
MCP, MCAD, MCTS:Win, MCTS:Web
|
|
|
MOPO3
Ай да дэдушка! Вах...
Команда клуба
Offline
Пол:
Холадна аднака!
|
|
« Ответ #7 : 31-08-2004 12:10 » |
|
ругается так : unresolved external symbol "public: static void __cdecl Test::SetNumber(class CString)" (?SetNumber@Test@SAXVCString@@@Z)
|
|
|
Записан
|
MCP, MCAD, MCTS:Win, MCTS:Web
|
|
|
MOPO3
Ай да дэдушка! Вах...
Команда клуба
Offline
Пол:
Холадна аднака!
|
|
« Ответ #8 : 31-08-2004 12:14 » |
|
Прошу прощения, май мистэйк, забыл реализацию описать в классе Тест :oops:
|
|
|
Записан
|
MCP, MCAD, MCTS:Win, MCTS:Web
|
|
|
MOPO3
Ай да дэдушка! Вах...
Команда клуба
Offline
Пол:
Холадна аднака!
|
|
« Ответ #9 : 31-08-2004 12:33 » |
|
Если ещё не надоел... class Test { public : UINT NOMER; static void GetNumber (CString foo2); //реализация функций void GetNumber(str_number) //str_number = "1234" { NOMER = (UINT)_ttoi(str_number); } } вызывается функция тут : class Test2 { ..... void Test2::Procseed() { Test::GetNumber("blablabla"); } } Получаю ошибку компиляции : error C2597: illegal reference to data member 'Test::NUMBER' in a static member function
|
|
« Последнее редактирование: 01-12-2007 12:59 от Алексей1153++ »
|
Записан
|
MCP, MCAD, MCTS:Win, MCTS:Web
|
|
|
Pu
Большой босс
Offline
78
|
|
« Ответ #10 : 31-08-2004 12:36 » |
|
UINT NOMER; - должен быть статик - смотри мой пост выше.
|
|
|
Записан
|
Насколько я опытен? Достаточно, чтобы понимать, что дураков нельзя заставить думать по–другому, но недостаточно, чтобы отказаться от попыток это сделать. (с) Артур Джонс
|
|
|
Pu
Большой босс
Offline
78
|
|
« Ответ #11 : 31-08-2004 12:41 » |
|
MOPO3, смысл в том что статик функции ты можешь вызвать без реально существующих объектов этого класса. Те обращаться к нестатик мемберам класса нельзя - их просто может не существовать на настоящий момент. статик функции являются глобальными фунциями . НО имеют смысл в контексте пространства имен своего класса.
|
|
|
Записан
|
Насколько я опытен? Достаточно, чтобы понимать, что дураков нельзя заставить думать по–другому, но недостаточно, чтобы отказаться от попыток это сделать. (с) Артур Джонс
|
|
|
MOPO3
Ай да дэдушка! Вах...
Команда клуба
Offline
Пол:
Холадна аднака!
|
|
« Ответ #12 : 31-08-2004 12:42 » |
|
Если делаю static UINT NOMER; , то получаю : unresolved external symbol "public: static unsigned int TEST::NUMBER" (?NUMBER@Test@@2IA)
|
|
« Последнее редактирование: 01-12-2007 13:05 от Алексей1153++ »
|
Записан
|
MCP, MCAD, MCTS:Win, MCTS:Web
|
|
|
Pu
Большой босс
Offline
78
|
|
« Ответ #13 : 31-08-2004 12:48 » |
|
примерчик реализации class Test { public : static UINT NOMER; static void GetNumber (CString foo2); //реализация функций };
в .cpp UINT Test::NOMER = 0; void Test::GetNumber(str_number) //str_number = "1234" { NOMER = (UINT)_ttoi(str_number); }
class Test2 { ..... void Test2::Procseed() { Test::GetNumber("blablabla"); } }
или class Test { public : UINT NOMER; static void GetNumber (CString foo2, Test *t=0); //реализация функций };
в .cpp void Test::GetNumber(CString foo2, Test *t) //str_number = "1234" { if(t) t->NOMER = (UINT)_ttoi(foo2); }
class Test2 { ..... void Test2::Procseed() { Test::GetNumber("blablabla"); } }
в таком вот духе
|
|
« Последнее редактирование: 01-12-2007 13:07 от Алексей1153++ »
|
Записан
|
Насколько я опытен? Достаточно, чтобы понимать, что дураков нельзя заставить думать по–другому, но недостаточно, чтобы отказаться от попыток это сделать. (с) Артур Джонс
|
|
|
Pu
Большой босс
Offline
78
|
|
« Ответ #14 : 31-08-2004 12:49 » |
|
MOPO3, на последний твой пост в спп надо сделать так UINT Test::NOMER = 0;
|
|
|
Записан
|
Насколько я опытен? Достаточно, чтобы понимать, что дураков нельзя заставить думать по–другому, но недостаточно, чтобы отказаться от попыток это сделать. (с) Артур Джонс
|
|
|
MOPO3
Ай да дэдушка! Вах...
Команда клуба
Offline
Пол:
Холадна аднака!
|
|
« Ответ #15 : 31-08-2004 13:21 » |
|
ОК, теперь работает. Спасибо всем огромное! Иду дальше ковыряться.
|
|
|
Записан
|
MCP, MCAD, MCTS:Win, MCTS:Web
|
|
|
|