C ++: ошибка: ожидаемый неквалифицированный идентификатор перед '!'знак - PullRequest
0 голосов
/ 30 января 2012

Я уже прочитал большинство соответствующих ответов по этой теме, но я не могу найти что-то не так с моим кодом. Ниже мой код:

oneaborq.cc

...
#include "stdmacro.h"
...

class marker_t {
public:
   signed_city_id_t val;
   inline marker_t() { val = 0; };
   inline signed_city_id_t is_true() { return val; };
   inline signed_city_id_t is_false() { return (signed_city_id_t)!val; };
   inline void make_true() { val = 1; };
   inline void not() { val = (signed_city_id_t)!val; };
};

stdmacro.h

#define LARGE_CITY_ID
...
typedef
#ifdef UNSIGNED_CITY_ID
unsigned
#else
signed
#endif
#ifdef LARGE_CITY_ID
short
#else
char
#endif
city_id_t;

/* signed_city_id_t is the same sizeof() as the city_id_t but can be negative
 * and should be asserted not to go more than positive MAX_DEGREE/2
 */
typedef
signed
#ifdef LARGE_CITY_ID
short
#else
char
#endif
signed_city_id_t;

Я пытался изменить в "sign_city_id_t" явное "short" или "int" в oneaborq.cc, но это, похоже, не помогло. Я также попытался изменить полное определение класса на:

* * 1010

Даже когда нет "!" во всем определении класса он все еще получает ту же ошибку: "oneaborq.cc:207: ошибка: ожидаемый неквалифицированный идентификатор перед токеном‘! "*

Я пытаюсь скомпилировать решатель TSP (Travelins Salesman Problem) (находится здесь: http://www.cs.sunysb.edu/~algorith/implement/tsp/distrib/tsp_solve) в OS X, поэтому, если кто-то хочет увидеть весь исходный код, взгляните на ссылку выше.

1 Ответ

5 голосов
/ 30 января 2012
inline void not() { val = (signed_city_id_t)!val; };

not похоже на ключевое слово в C ++ и является альтернативным написанием для токена !. Вы не можете использовать его в качестве имени функции.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...