Во время реализации класса для создания/обновления полей на экране я хотел добавить статическую функцию-член, которая не перекрывает видимые в настоящее время поля (принимая информацию из массива статических указателей во все видимые в настоящее время поля)
Мой начальный код имел следующую структуру:
class Box
{
public:
// ...
static void arrangeOverlappingBoxes();
};
static void Box::arrangeOverlappingBoxes()
{
// ...
}
Я был очень удивлен, что это вызвало ошибку C2724: "static" не следует использовать для функций-членов, определенных в области файлов.
С некоторыми пробными версиями Google и ошибкой я понял, что мое определение функции должно потерять ключевое слово static
, то есть оно должно быть
void Box::arrangeOverlappingBoxes()
{
// ...
}
Но я не знаю, что может быть причиной этого. Кажется, это так асимметрично и сбивает с толку, что у него есть другой заголовок функции для его объявления в определении класса и его собственном определении. Есть ли причина для этого?