Ошибка C2280 происходит в функции шаблона класса в Visual Studio 2022
Компилятор сообщает, что функция удаляется, поскольку используется элемент данных типа.class CReference {
public:
double& m_Reference;
CReference(double& Data) :
m_Reference(Data)
{
}
virtual ~CReference() {};
CReference(const CReference& Obj) :
m_Reference(Obj.m_Reference) {
}
CReference& operator = (const CReference& Obj) {
m_Reference = Obj.m_Reference;
return *this;
}
};
int main() {
double e0 = 1.0, e1 = 2.0;
CReference R0(e0);
CReference R1(e1);
CReference R2(R0);
R2 = R1;
}
< /code>
Классы шаблонов и функции шаблонов также могут быть скомпилированы и выполняются нормально < /p>
template
class CVectorReference2 {
public:
Type& m_x, & m_y;
Type& m_s, & m_t;
CVectorReference2(Type& Value0, Type& Value1) :
m_x(Value0), m_y(Value1),
m_s(Value0), m_t(Value1) { }
virtual ~CVectorReference2() {}
CVectorReference2(const CVectorReference2& Vector) :
m_x(Vector.m_x), m_y(Vector.m_y),
m_s(Vector.m_s), m_t(Vector.m_t) { }
CVectorReference2& operator=(const CVectorReference2& Vector) {
Assign(Vector);
return *this;
}
template
inline void Assign(const CVectorReference2& Vector) {
m_x = (Type)Vector.m_x;
m_y = (Type)Vector.m_y;
}
};
int main() {
double e0, e1, e2 = 1.0, e3 = 2.0;
CVectorReference2 P0(e0, e1);
CVectorReference2 P1(e2, e3);
CVectorReference2 P2(P0);
P2 = P1;
}
< /code>
Но когда Operator = заменяется функцией шаблона, сообщается об ошибке C2280, говоря, что используются элементы данных типа ссылки? Почему?template
class CVectorReference2 {
public:
Type& m_x, & m_y;
Type& m_s, & m_t;
CVectorReference2(Type& Value0, Type& Value1) :
m_x(Value0), m_y(Value1),
m_s(Value0), m_t(Value1) { }
virtual ~CVectorReference2() {}
CVectorReference2(const CVectorReference2& Vector) :
m_x(Vector.m_x), m_y(Vector.m_y),
m_s(Vector.m_s), m_t(Vector.m_t) { }
template //
Подробнее здесь: https://stackoverflow.com/questions/794 ... tudio-2022
Ошибка C2280 происходит в функции шаблона класса в Visual Studio 2022 ⇐ C++
Программы на C++. Форум разработчиков
1741615235
Anonymous
Ошибка C2280 происходит в функции шаблона класса в Visual Studio 2022
Компилятор сообщает, что функция удаляется, поскольку используется элемент данных типа.class CReference {
public:
double& m_Reference;
CReference(double& Data) :
m_Reference(Data)
{
}
virtual ~CReference() {};
CReference(const CReference& Obj) :
m_Reference(Obj.m_Reference) {
}
CReference& operator = (const CReference& Obj) {
m_Reference = Obj.m_Reference;
return *this;
}
};
int main() {
double e0 = 1.0, e1 = 2.0;
CReference R0(e0);
CReference R1(e1);
CReference R2(R0);
R2 = R1;
}
< /code>
Классы шаблонов и функции шаблонов также могут быть скомпилированы и выполняются нормально < /p>
template
class CVectorReference2 {
public:
Type& m_x, & m_y;
Type& m_s, & m_t;
CVectorReference2(Type& Value0, Type& Value1) :
m_x(Value0), m_y(Value1),
m_s(Value0), m_t(Value1) { }
virtual ~CVectorReference2() {}
CVectorReference2(const CVectorReference2& Vector) :
m_x(Vector.m_x), m_y(Vector.m_y),
m_s(Vector.m_s), m_t(Vector.m_t) { }
CVectorReference2& operator=(const CVectorReference2& Vector) {
Assign(Vector);
return *this;
}
template
inline void Assign(const CVectorReference2& Vector) {
m_x = (Type)Vector.m_x;
m_y = (Type)Vector.m_y;
}
};
int main() {
double e0, e1, e2 = 1.0, e3 = 2.0;
CVectorReference2 P0(e0, e1);
CVectorReference2 P1(e2, e3);
CVectorReference2 P2(P0);
P2 = P1;
}
< /code>
Но когда Operator = заменяется функцией шаблона, сообщается об ошибке C2280, говоря, что используются элементы данных типа ссылки? Почему?template
class CVectorReference2 {
public:
Type& m_x, & m_y;
Type& m_s, & m_t;
CVectorReference2(Type& Value0, Type& Value1) :
m_x(Value0), m_y(Value1),
m_s(Value0), m_t(Value1) { }
virtual ~CVectorReference2() {}
CVectorReference2(const CVectorReference2& Vector) :
m_x(Vector.m_x), m_y(Vector.m_y),
m_s(Vector.m_s), m_t(Vector.m_t) { }
template //
Подробнее здесь: [url]https://stackoverflow.com/questions/79498213/error-c2280-occurs-in-class-template-function-in-visual-studio-2022[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия