Проблема перегрузки оператора присваивания в шаблонном классе - PullRequest
0 голосов
/ 04 апреля 2019

Используя компилятор C ++ командной строки MS, версия, как указано в выходных данных ниже, компилирует следующую ошибку с включенным в отчет компилятором:

// File: shared_memory.h

template <class Contents>
class SharedMemory {
public:
    ...
    operator Contents& () {
        ...
    }
    ...
    SharedMemory &operator= (Contents &contents) { // [EDIT] CONST REMOVED AT PARAMETER
        ...
    }
    ...
};

// File: shared_memory_test.cpp

class SharedAnimals: public SharedMemory <Animals> {
    ...
    using SharedMemory <Animals>::operator=;       // [EDIT] HAD TO BE ADDED
    ...
};                              // This is line 67 in the original code

int main (int argc, char** argv) {
    ...
    Animals animals (kind);
    ...
    sharedAnimals = animals;    // This is line 93 in the original code
    ...
}

// Compiler reports:

shared_memory_test.cpp
C:\Program Files (x86)\Microsoft Visual Studio\2017\BuildTools\VC\Tools\MSVC\14.16.27023\include\xlocale(319): warning C4530: C++ exception handler used, but unwind semantics are not enabled. Specify /EHsc
shared_memory_test.cpp(93): error C2679: binary '=': no operator found which takes a right-hand operand of type 'Animals' (or there is no acceptable conversion)
shared_memory_test.cpp(67): note: could be 'SharedAnimals &SharedAnimals::operator =(SharedAnimals &&)'
shared_memory_test.cpp(67): note: or       'SharedAnimals &SharedAnimals::operator =(const SharedAnimals &)'
shared_memory_test.cpp(93): note: while trying to match the argument list '(SharedAnimals, Animals)'

Может кто-нибудь дать мне подсказку о том, что я делаюне так?

[EDIT]

Действительно, ответ на Наследование оператора присваивания , предоставленный пользователем 1810087, решил проблему.

Пока ответ уже существует,контекст этого вопроса, а именно использование шаблонного класса, привел меня к мысли, что ошибка связана с этим, и не искал вопросов, касающихся «наследования оператора присваивания».

Поскольку я не могу бытьтолько один сталкивается с этим, я предлагаю сохранить этот вопрос.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...