Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

C++ тройной оператор

15122021 Профи (770), открыт 3 недели назад
error C2059: синтаксическая ошибка: =

 class PMove: public GStat 
{
private:
float xa, ya, result, X, Y;
float XCoord[10];
float YCoord[10];
int PLoop;
int& IRef = PLoop;
public:
PMove()
:GStat(0), xa(0.0f), ya(0.0f), result(0), X(0.0f), Y(0.0f)
{
IRef = 0;
}
PMove(float PLVLRef)
:GStat(PLVLRef),xa(0.0f),ya(0.0f),result(0),X(0.0f),Y(0.0f)
{
IRef = 0;
}
xa = PLVL > 0 && PLVL < 100 ? PLVL == 0 ? 0 : PLVL + 6 : 0;
ya = PLVL > 0 && PLVL < 100 ? PLVL == 0 ? 0 : PLVL + 6 : 0;
PMove summ(PMove& other)
{
return PMove(X + other.PLVL, Y + other.PLVL);
}
void PMFunc()
{
}
};
я перенес тройной оператор в другой класс и у меня вылетела ошибка, жалуется на "=", есть идеи?
2 ответа
neverever Знаток (327) 3 недели назад
В вашем коде выражения xa = ... и ya = ... находятся на уровне класса, что недопустимо. Эти выражения должны быть внутри метода или конструктора
nevereverЗнаток (327) 3 недели назад
 class PMove : public GStat  
{
private:
float xa, ya, result, X, Y;
float XCoord[10];
float YCoord[10];
int PLoop;
int& IRef = PLoop;
public:
PMove()
: GStat(0), xa(0.0f), ya(0.0f), result(0), X(0.0f), Y(0.0f)
{
IRef = 0;
}

PMove(float PLVLRef)
: GStat(PLVLRef), xa(0.0f), ya(0.0f), result(0), X(0.0f), Y(0.0f)
{
IRef = 0;
xa = (PLVLRef > 0 && PLVLRef < 100) ? (PLVLRef == 0 ? 0 : PLVLRef + 6) : 0;
ya = (PLVLRef > 0 && PLVLRef < 100) ? (PLVLRef == 0 ? 0 : PLVLRef + 6) : 0;
}

PMove summ(PMove& other)
{
return PMove(X + other.PLVL, Y + other.PLVL);
}
neverever, а само задание имеется, если не секрет?
Jurijus Zaksas Искусственный Интеллект (445767) 3 недели назад
Тернарный оператор имеет вид:

<condition>?<value when true>:<value when false>;

Один знак вопроса и одно двоеточие.
А теперь посмотри, сколько их у тебя.
Если тебе надо использовать вложенные тернарные операторы - используй скобки, например:

<condition>?(<condition>?<value when true>:<value when false>):(<condition>?<value when true>:<value when false>);
Похожие вопросы