Dev-C ++ выдает ошибку синтаксиса '&' - PullRequest
0 голосов
/ 24 марта 2012

Что случилось с Dev-C ++ или в моем коде есть ошибки при использовании ссылочной переменной?

#include <stdio.h>

    struct P {
        int x;  
    };

    int main(int argc, char **argv){
        struct P Point[5];
        struct P & rPoint;

        int i;
        for(i=0;i<=4;i++) {
            rPoint = Point[i]; // I know. I can use Point[i].x = i. But...
            rPoint.x = i;
        }

        for(i=0;i<=4;i++) {
            rPoint = Point[i];
            printf("%d\n", rPoint.x);
        }
       system("pause");
       return 0;
    }

Ошибка: 9 C: *** \ main.cсинтаксическая ошибка перед символом '&'

Ответы [ 3 ]

4 голосов
/ 24 марта 2012

C ++ не разрешает неназначенные ссылки, поэтому это ваша ошибка:

struct P & rPoint;

Если вы хотите переназначить, используйте указатель.

int main(int argc, char **argv){
    struct P points[5];
    struct P* point;

    int i;
    for(i=0;i<=4;i++) {
        point = points + i; // or &points[i]
        point->x = i;
    }
    // ...
2 голосов
/ 24 марта 2012

Ошибка: 9 C: * \ main .c Синтаксическая ошибка перед символом & & token

Помимо того, что сказали другие, вы компилируете его как файл C, а в C ссылки не существуют. Дайте ему расширение .cpp, если вы хотите скомпилировать его как C ++, или сделайте point указателем вместо ссылки (на самом деле вам придется сделать это указателем в любом случае, так как вы не можете переустановить ссылку).

2 голосов
/ 24 марта 2012

C ++ ссылки не работают так.Вы должны инициализировать ссылку при ее определении.Так что-то вроде:

int x = 5;
int &r = x;   // Initialise r to refer to x

Кроме того, вы не можете «переместить» ссылку;он всегда будет ссылаться на одну и ту же переменную.Продолжая приведенный выше пример:

int x = 5;
int y = 10;
int &r = x;

r = y;  // This will not re-seat y; it's equivalent to x = y
...