Определение структуры внутри класса
От: DukeNukem3D Россия  
Дата: 05.05.08 05:54
Оценка:
Создаю следующий класс и в нем структуру:

class clsAngle
{
    private:

        struct strctCoordinate
        {
            short siGrad;
            float fMinutes;
            char cDirection;
        };

        strctCoordinate NS, WE;


    public:

        clsAngle() : NS.cDirection ( ' ' ), NS.siGrad ( 0 ), NS.fMinutes ( 0 ), WE.cDirection ( ' ' ), WE.siGrad ( 0 ), WE.fMinutes ( 0 )
        {
        }


Работаю в KDevelop, собственно компилятор отвечает следующее:


In constructor 'clsAngle::clsAngle()':
error: expected `(' before '.' token
error: expected `{' before '.' token


Не понимаю что сделал не правильно.
С уважением, Андрей
Re: Определение структуры внутри класса
От: jazzer Россия Skype: enerjazzer
Дата: 05.05.08 05:57
Оценка:
Здравствуйте, DukeNukem3D, Вы писали:

DND>Создаю следующий класс и в нем структуру:

DND>
DND>        clsAngle() : NS.cDirection ( ' ' ), NS.siGrad ( 0 ), NS.fMinutes ( 0 ), WE.cDirection ( ' ' ), DND>

DND>Не понимаю что сделал не правильно.

нельзя инициализировать члены членов.
Вложенность структуры тут ни при чем.
jazzer (Skype: enerjazzer) Ночная тема для RSDN
Автор: jazzer
Дата: 26.11.09

You will always get what you always got
  If you always do  what you always did
Re[2]: Определение структуры внутри класса
От: DukeNukem3D Россия  
Дата: 05.05.08 06:01
Оценка:
То есть структуру я не смогу использовать в классе как бы то ни было?
С уважением, Андрей
Re[3]: Определение структуры внутри класса
От: AKh  
Дата: 05.05.08 06:09
Оценка:
Здравствуйте, DukeNukem3D, Вы писали:

DND>То есть структуру я не смогу использовать в классе как бы то ни было?


Сделай структуре конструктор, инициализирующий ее свойства:


class clsAngle
{
    private:

        struct strctCoordinate
        {
            short siGrad;
            float fMinutes;
            char cDirection;

            strctCoordinate(short siGrad_, float fMinutes_, char cDirection_) :
               siGrad(siGrad_), fMinutes(fMinutes_), cDirection(cDirection_) 
            {
            };
        };

        strctCoordinate NS, WE;


    public:

        clsAngle() : NS(0, 0, ' '), WE(0, 0, ' ')
        {
        }
}
Re[4]: Определение структуры внутри класса
От: DukeNukem3D Россия  
Дата: 05.05.08 06:23
Оценка:
AKh, спасибо огромное!
С уважением, Андрей
Re[4]: Определение структуры внутри класса
От: DukeNukem3D Россия  
Дата: 05.05.08 06:48
Оценка:
А перегрузить её уже нельзя будет я так понимаю да?


    public:

        clsAngle() : NS ( 0, 0, ' ' ), WE ( 0, 0, ' ' )
        {

        }

        clsAngle() : NS ( short siGradNS, float fMinutesNS, char cDirectionNS ), WE ( short siGradWE, float fMinutesWE, char cDirectionWE )
        {

        }


Чтобы потом осуществить нечто


int main()
{
    clsAngle Angle1 ((2),(2.2),('N'),((22)(22.22),('W'))), Angle2;


?
С уважением, Андрей
Re: offtopic
От: Roman Odaisky Украина  
Дата: 05.05.08 06:49
Оценка: +3
Здравствуйте, DukeNukem3D, Вы писали:

DND>class clsAngle

DND> struct strctCoordinate
DND> short siGrad;
DND> float fMinutes;
DND> char cDirection;

Это самый бесполезный вид венгерской нотации. IDE тебе и сама подскажет, какой тип имеет данная переменная.

Венгерская нотация, на самом деле, служит для того, чтобы различать разные виды данных, которые хранятся в переменных одного типа. Например, первичный ключ таблицы может иметь тип int, и порядковый номер записи в запросе тоже может быть int. Но если вторые можно инкрементировать, декрементировать, вычитать, то первые можно только сравнивать.

int const cElements = ixElementLast - ixElementFirst; // OK (c = count, ix = index)
++ixElementCurr; // OK
++idElementCurr; // oops!
rowPrev = rowCurr; // OK
rowPrev = colCurr; // oops!

И т. д. RTFM.
До последнего не верил в пирамиду Лебедева.
Re: Определение структуры внутри класса
От: Максим2006 Беларусь  
Дата: 05.05.08 07:08
Оценка:
Здравствуйте, DukeNukem3D, Вы писали:

DND>Создаю следующий класс и в нем структуру:

DND>
DND>        clsAngle() : NS.cDirection ( ' ' ), NS.siGrad ( 0 ), NS.fMinutes ( 0 ), WE.cDirection ( ' ' ), WE.siGrad ( 0 ), WE.fMinutes ( 0 )
DND>        {
DND>        }
DND>

DND>Не понимаю что сделал не правильно.

Чтобы не возиться с конструктором структуры и сохранить POD-тип, можно выполнить обычное присваивание в теле конструктора класса
clsAngle()
{
    NS.cDirection = ' ';
    // ...
}
Re[5]: Определение структуры внутри класса
От: AKh  
Дата: 05.05.08 07:39
Оценка: 2 (1)
Здравствуйте, DukeNukem3D, Вы писали:

DND>А перегрузить её уже нельзя будет я так понимаю да?


Отчего же? Передавай во втором конструкторе нужные тебе параметры:

DND>
DND>    public:

DND>        clsAngle() : NS ( 0, 0, ' ' ), WE ( 0, 0, ' ' )
DND>        {

DND>        }

DND>        clsAngle(short siGradNS_, ...) : NS (siGradNS_, ...), WE (..)
DND>        {

DND>        }
DND>


ПС: для "Спасибо" кнопочки есть.
Re: Определение структуры внутри класса
От: Daevaorn Россия  
Дата: 05.05.08 09:03
Оценка:
Здравствуйте, DukeNukem3D, Вы писали:

DND>Создаю следующий класс и в нем структуру:

DND>

DND>class clsAngle
DND>{
DND>    private:

DND>        struct strctCoordinate
DND>        {
DND>            short siGrad;
DND>            float fMinutes;
DND>            char cDirection;
DND>        };

DND>        strctCoordinate NS, WE;


DND>    public:

DND>        clsAngle() : NS.cDirection ( ' ' ), NS.siGrad ( 0 ), NS.fMinutes ( 0 ), WE.cDirection ( ' ' ), WE.siGrad ( 0 ), WE.fMinutes ( 0 )
DND>        {
DND>        }
DND>


DND>Работаю в KDevelop, собственно компилятор отвечает следующее:



DND>

DND>In constructor 'clsAngle::clsAngle()':
DND>error: expected `(' before '.' token
DND>error: expected `{' before '.' token


DND>Не понимаю что сделал не правильно.


Вы написали конструктор класса, а инициализируете структуры....что-то тут не так...
Re: offtop_2
От: Аноним  
Дата: 07.05.08 14:02
Оценка:
Мне интересно вы начинающий или с какого-то языка пришелец, иначе говоря где такое работать будет
Re[2]: offtop_2
От: Аноним  
Дата: 07.05.08 14:11
Оценка:
Здравствуйте, Аноним, Вы писали:

А>Мне интересно вы начинающий или с какого-то языка пришелец, иначе говоря где такое работать будет

А в чём засада?
Re[2]: offtopic
От: Vamp Россия  
Дата: 08.05.08 13:24
Оценка:
А еще лучше, даваить переменным значимые имена. Тогда никакая нотация не потребуется.
Да здравствует мыло душистое и веревка пушистая.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.