Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C/C++: Общие вопросы > Разница между постановкой указателя в классе


Автор: Alexey91 29.9.2010, 13:51
Компилятор (devcpp) видит разницу, между постановкой символа указателя при инициализации функции-члена.
Например, если я напишу так:

Код

class A
{
 . . .
 virtual class A *new_func();

}

class A A :: *newfunc()
{
 ...
};




То компилятор вызовет ошибку, для него переменные, которые будут использовать в методе newfunc будут не объявленными.

Однако, если я напишу так, то все заработает:

Код

class A
{
 . . .
 virtual class A* new_func();

}

class A* A :: newfunc()
{
 ...
};



В чем разница, и почему так происходит?

Автор: bsa 29.9.2010, 13:54
потому что звездочка относится к типу, а не к названию переменной. Т.е. правильно писать type* x, а не type *x. Кстати, ключевое слово class (да и struct) в С++ писать не принято нигде, кроме как в объявлении. Т.е. запись "class X x;" следует писать так: "X x". Это не Си.

Автор: EnergoHokum 29.9.2010, 13:56
Во первых, компилятор не dev-cpp, а gcc, а во вторых вот это: A :: *newfunc() на самом деле указатель на функцию-член класса A, не принимающую и не возвращающую параметров. Как то так...

Автор: Alexey91 30.9.2010, 14:50
bsa, EnergoHokum
Спасибо вам!! +++

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)