Определение структуры внутри класса
Создаю следующий класс и в нем структуру:
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>Не понимаю что сделал не правильно.
нельзя инициализировать члены членов.
Вложенность структуры тут ни при чем.
Re[2]: Определение структуры внутри класса
То есть структуру я не смогу использовать в классе как бы то ни было?
С уважением, Андрей
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]: Определение структуры внутри класса
AKh, спасибо огромное!
С уважением, Андрей
Re[4]: Определение структуры внутри класса
А перегрузить её уже нельзя будет я так понимаю да?
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;
?
С уважением, Андрей
Здравствуйте, 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: Определение структуры внутри класса
Здравствуйте, 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>Не понимаю что сделал не правильно.
Вы написали конструктор класса, а инициализируете структуры....что-то тут не так...
От:
Аноним
Дата: 07.05.08 14:02
Оценка:
Мне интересно вы начинающий или с какого-то языка пришелец, иначе говоря где такое работать будет
От:
Аноним
Дата: 07.05.08 14:11
Оценка:
Здравствуйте, Аноним, Вы писали:
А>Мне интересно вы начинающий или с какого-то языка пришелец, иначе говоря где такое работать будет
А в чём засада?
От:
Vamp
Дата: 08.05.08 13:24
Оценка:
А еще лучше, даваить переменным значимые имена. Тогда никакая нотация не потребуется.
Да здравствует мыло душистое и веревка пушистая.
Пока на собственное сообщение не было ответов, его можно удалить.
Удалить