struct ToneStruct
вы объявляете внутри ваш class Song
(или song
?) Отличается от struct ToneStruct
, который вы объявляете на уровне файла.Первый тип Song::ToneStruct
, последний - имя в глобальном пространстве имен.
Если вы хотите объявить вперед ToneStruct
, вам нужно сделать это вне любогоclass.
Другим вариантом является определение и использование Song::ToneStruct
вместо ::ToneStruct
повсюду.
Это, вероятно, вам мало поможет, потому что в этом случае недостаточно предварительного объявления.Тип возвращаемого значения функции должен быть полным, прежде чем использовать функцию.Это практически означает, что song.h должен полностью определить struct ToneStruct
, прежде чем вы сможете объявить GetNextNote
.
Если вы хотите использовать GetNextNote
только внутри Song.cpp
, вам может потребоваться предварительное объявление, но тогда GetNextNote
, вероятно, не должно быть публичным членом.