Top.Mail.Ru
Ответы

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

error C2059: синтаксическая ошибка: =

123456789101112131415161718192021222324252627282930
 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() 
	{ 
	} 
}; 
 

я перенес тройной оператор в другой класс и у меня вылетела ошибка, жалуется на "=", есть идеи?

По дате
По рейтингу
Аватар пользователя
Ученик

В вашем коде выражения xa = ... и ya = ... находятся на уровне класса, что недопустимо. Эти выражения должны быть внутри метода или конструктора

Аватар пользователя
Ученик
123456789101112131415161718192021222324252627
 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);  
    }  
Аватар пользователя
Искусственный интеллект

Тернарный оператор имеет вид:

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

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

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



Видео по теме