Для следующей программы C ++ / CLI:
#pragma managed(push, off)
class FooBar
{
FooBar(const FooBar& that) { *this = that; }
const FooBar& operator =(const FooBar& that);
};
#pragma managed(pop)
int main()
{
return 0;
}
Предоставляет следующий вывод компоновщика:
Код серьезности Описание Ошибка состояния подавления строки файла проекта LNK2019, неразрешенный внешний символ "private": класс FooBar const & __thiscall FooBar :: operator = (класс FooBar const &) "(?? 4FooBar @@ AAEABV0 @ ABV0 @@ Z) ссылается на функцию" private: __thiscall FooBar :: FooBar (класс FooBar const &) "(?? 0FooBar @@ AAE @ ABV0 @@ Z) ConsoleApplication1 C: \ Users \ SomeUser \ Documents \ Visual Studio 2019 \ Projects \ ConsoleApplication1 \ ConsoleApplication1 \ ConsoleApplication1 \ ConsoleApplication1.obj 1
Но следующееПрограмма на C ++ не делает:
class FooBar
{
FooBar(const FooBar& that) { *this = that; }
const FooBar& operator =(const FooBar& that);
};
int main()
{
return 0;
}
Причина, по которой мне нужно, чтобы это работало, заключается в том, что я включаю заголовочный файл, который находится вне моего контроля, который делает это.Хотя мне никогда не нужно использовать конструктор копирования или оператор присваивания.
Скомпилировано с использованием набора инструментов платформы v142.