Оператор, перегружающийся в C

Я пытаюсь перегрузить некоторые операторы:

/* Typedef is required for operators */
typedef int Colour;

/* Operators */
Colour operator+(Colour colour1, Colour colour2);
Colour operator-(Colour colour1, Colour colour2);
Colour operator*(Colour colour1, Colour colour2);
Colour operator/(Colour colour1, Colour colour2);

Я получаю эту ошибку для каждой испытанной перегрузки:

expected '=', ',', ';', 'asm' or '__attribute__' before '+' token

Я не могу найти хорошую документацию относительно перегрузки оператора. Поиск с помощью Google результатов в учебных руководствах C++, которые используют классы. В C нет никаких классов. Кто-либо может помочь мне?Спасибо.

27
задан 5 August 2010 в 17:57
поделиться

5 ответов

C не поддерживает перегрузку операторов (помимо того, что встроено в язык).

58
ответ дан 28 November 2019 в 04:02
поделиться

В C. нет перегрузки оператора.

23
ответ дан 28 November 2019 в 04:02
поделиться

Вы не можете перегрузить эти операторы в C.

15
ответ дан 28 November 2019 в 04:02
поделиться

Перегрузка оператора недоступна в C. Вместо этого вам придется использовать функцию для «псевдо- overload »операторы:

Colour add_colours(Colour c1, Colour c2) {
    return c1 + c2; // or whatever you need to do
}
5
ответ дан 28 November 2019 в 04:02
поделиться

C вообще не поддерживает перегрузку операторов.

Вы можете реализовать операции только как функции:

Colour colour_add(Colour c1, Colour c2);
Colour colour_substract(Colour c1, Colour c2);
...

Вы также можете переключиться на C ++, но это может быть излишним, если вы сделаете это только для перегрузки.

8
ответ дан 28 November 2019 в 04:02
поделиться
Другие вопросы по тегам:

Похожие вопросы: