LINUX.ORG.RU

Не вызываются функции внутри namespace.


0

0

Определён класс A лежащий внутри пространства имён K3DD.
Вот те куски кода:

-------------------class a .h ------------------------------------------
namespace K3DD
{
//.................Some Code

void resize(int width,int height);
void draw(void);

class a
{
private:

//.................Some Code

public:

//.................Some Code
void run(int argc, char* argv[]);
void emp(void);
};
}
-------------------class a .h end --------------------------------------

------------------- class a .cpp ----------------------------------------

{
// ..............Some Code

void a::emp()
{
cout << "zzzzzzzzzzzzzzzzzzzzzz";
}

void a::run(int argc, char* argv[])
{
readDesktopFile("/home/alexandr/Desktop/.directory");
readConfig("/home/alexandr/.k3dd/k3dd-conf");
initOGL(argc,argv);
cout << "xxxxxxxxxxxxxxxxxxxxx";
emp();
}
}
------------------- class a end .cpp -------------------------------------

Проблема такого рода, есть гланый модуль (aka main.cpp) в нем определен обьект

A* app;
app = new A;

Затем у этого обьекта вызывается метод run

app -> run();

------------------- main.cpp ------------------------------------------------

#include "a.h"
#include <cstdlib>

using namespace K3DD;

int main(int argc, char *argv[])
{
a* app;
app = new a;
app ->run(argc, argv);
}

------------------- main.cpp end -------------------------------------------

(Это не работает даже если сделать
A app;
app.run(argc,argv);
)

Ну так вот функция run не вызывается, это я узнаю по тому что не печатаются
соответствующие строчки ("...xx...", "...zzz..."). Не могу понять в чём проблема может кто подскажет что не так.

Заранее спасибо!!!!

★★★★★

Пардон опечатка

------------------- class a .cpp ----------------------------------------
namespace K3DD
{
..........................
}
------------------- class a end .cpp -------------------------------------

cyclon ★★★★★
() автор топика
Ответ на: комментарий от cyclon

Рас скмпилилось - значит вызывается. У тебя там смотрю opengl - наверно что-то он мудрит. Вместо вывода на экран сделай например вывод в файл вот и проверишь.

anonymous
()
Ответ на: комментарий от anonymous

Так тут дело даже не в opengl, не вызывается функция не использующая opengl, т.е. тестовая строка в этой функции не выводится - функция run.

cyclon ★★★★★
() автор топика
Ответ на: комментарий от cyclon

Проблема кажется вот в чём:

Определены:

static K3DDIcons* icons;
static K3DDesk desktop;
static int num_of_icons;

и icons инициализзируется как

void K3DDesktop::readicons(int file, int count)
{
char s;
string name, x, y;
int num_of_sym = 0;
int conv = 0;
cout << "readicons-1\n";
icons = new K3DDIcons[count];
cout << "readicons0\n";
...............
}

т.е. видимо проблема в инициализации поскольку cout "readicons0\n" не рисутеся.
Но если не так то как инициировать статический элемент?! Подскажите Плз!!!

cyclon ★★★★★
() автор топика
Ответ на: комментарий от cyclon

>>как инициировать статический элемент?!

ыыы... обо что ?!
Значение присвоить ? Дык точно так-же.

anonymous
()
Ответ на: комментарий от anonymous

Так видимо просто присвоить не получается, что то происходит нехорошее и на нём прога кончается. Может есть знающие люди и посоветуют что делать?!

cyclon ★★★★★
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.