Я пишу сборку .NET, используя C++/CLI (версия 9.0), и я хотел бы использовать идиому PIMPL, чтобы не помещать ненужные вещи в мой общедоступный заголовок. К сожалению, когда я пытаюсь перенаправить объявление класса, а затем использую для него дескриптор отслеживания, я получаю предупреждение компоновщика 4248:
предупреждение LNK4248: неразрешенный токен typeref (0100000E) для «MyNamespace.PrivateClass»; образ может не запуститься
Кажется, это так, использую ли я класс CLI или собственный класс для класса реализации.
Пример кода показан ниже:
namespace MyNamespace
{
ref class PrivateClass; // forward dec
ref class MyPublicClass
{
private:
PrivateClass^ m_Imp;
};
}
К сожалению, объяснение предупреждения Microsoft не слишком информативно.