У меня есть 2 файла заголовков:
[*]color.h [*]rgb.h
В файле color.h у меня есть:
#pragma Once класс RGB; класс ХСЛ; класс Цвет { публика: /** Альфа-значение цвета. */ интервал а; статический RGB rgb(int r, int g, int b, int a = 255); статический HSL hsl(int h, int s, int l, int a = 255); }; Тогда в моем файле rgb.h у меня есть:
#pragma Once #include "color.h" класс Цвет; класс RGB: публичный цвет { публика: интервал р; интервал г; интервал б; RGB(int r, int g, int b, int a = 255); }; Но по какой-то причине возникают следующие две ошибки, и я не знаю почему.
[*]объявление ничего не декларирует [*]макросу "RGB" передано 4 аргумента, но требуется только 3.
У меня также есть еще один файл под названием hsl.h. Он по сути такой же, как файл rgb.h, только в нем нет этих ошибок:
#pragma Once #include "color.h" класс Цвет; класс HSL: public Color { публика: интервал ч; интервал с; интервал л; HSL(int h, int s, int l, int a = 255); }; Что является причиной этого?
Судя по второй ошибке, мне кажется, что он пытается переопределить существующий класс/конструктор. Я использую #include в своем файле main.cpp. Может ли это быть объявлением RGB, который я случайно пытаюсь переопределить?
Вот полное сообщение об ошибке:
C:\Users\untun\Documents\vscode\draw\draw\core\color/rgb.h:13:39: ошибка: макрос «RGB» передал 4 аргумента, но принимает только 3 13 | RGB(int r, int g, int b, int a = 255); | ^ В файле, включенном из C:/msys64/ucrt64/include/windows.h:71, из C:/msys64/ucrt64/include/rpc.h:16, из C:/msys64/ucrt64/include/objbase.h:7, из C:/msys64/ucrt64/include/shlwapi.h:14, из C:/msys64/ucrt64/include/jmorecfg.h:19, из C:/msys64/ucrt64/include/jpeglib.h:31, из C:\Users\untun\Documents\vscode\draw\draw\core\main.cpp:1: C:/msys64/ucrt64/include/wingdi.h
Мобильная версия