Я пытаюсь создать класс в C++, который имеет переменные, скажем, int и функцию, которую я буду вызывать foo в производном классе, а затем изменить его так, чтобы все int теперь являются двойными. Это пример:
template
class BaseT {
public:
using variable = std::conditional_t;
BaseT() = default;
virtual variable foo(variable var) {return 0;}
};
using Base = BaseT;
using BaseDouble = BaseT;
class Derived : public Base{
public:
variable a, b, c;
Derived()
:a(10), b(20), c(30)
{}
variable foo(variable var) override {
return var * a * b * c;
}
};
double runDerivedDouble(Derived& cls){
//in here I want to convert Derived to a version where the "variable"
//types are all floats instead of ints, and then run foo
}
По сути, мне интересно, возможно ли создать макрос, который создает отдельный класс, в котором содержимое foo такое же, как и у класса Derived, но тип переменная просто изменяется, и для меня создается отдельный класс.
Например, если бы я создал класс, выполняющий это, и назвал его DerivedDouble, вот как бы это выглядело . Однако моя цель состоит в том, чтобы мне не пришлось посещать этот урок. Мне нужен способ использовать макрос или что-то подобное, чтобы сгенерировать это и что foo выведет из класса DerivedDouble ниже. Мне действительно просто интересно, возможно ли это, и таким образом, чтобы мне не приходилось добавлять шаблон в Derived? По сути, мне интересно, смогу ли я создать версию класса, в которой шаблон базового класса можно будет изменить?
class DerivedDouble : public BaseDouble{
public:
variable a, b, c;
Derived()
:a(10), b(20), c(30)
{}
variable foo(variable var) override {
return var * a * b * c;
}
};
Подробнее здесь: https://stackoverflow.com/questions/791 ... class-in-c
Можно ли изменить определенные типы классов без копирования класса в C++? ⇐ C++
Программы на C++. Форум разработчиков
1731133261
Anonymous
Я пытаюсь создать класс в C++, который имеет переменные, скажем, int и функцию, которую я буду вызывать foo в производном классе, а затем изменить его так, чтобы все int теперь являются двойными. Это пример:
template
class BaseT {
public:
using variable = std::conditional_t;
BaseT() = default;
virtual variable foo(variable var) {return 0;}
};
using Base = BaseT;
using BaseDouble = BaseT;
class Derived : public Base{
public:
variable a, b, c;
Derived()
:a(10), b(20), c(30)
{}
variable foo(variable var) override {
return var * a * b * c;
}
};
double runDerivedDouble(Derived& cls){
//in here I want to convert Derived to a version where the "variable"
//types are all floats instead of ints, and then run foo
}
По сути, мне интересно, возможно ли создать макрос, который создает отдельный класс, в котором содержимое foo такое же, как и у класса Derived, но тип переменная просто изменяется, и для меня создается отдельный класс.
Например, если бы я создал класс, выполняющий это, и назвал его DerivedDouble, вот как бы это выглядело . Однако моя цель состоит в том, чтобы мне не пришлось посещать этот урок. Мне нужен способ использовать макрос или что-то подобное, чтобы сгенерировать это и что foo выведет из класса DerivedDouble ниже. Мне действительно просто интересно, возможно ли это, и таким образом, чтобы мне не приходилось добавлять шаблон в Derived? По сути, мне интересно, смогу ли я создать версию класса, в которой шаблон базового класса можно будет изменить?
class DerivedDouble : public BaseDouble{
public:
variable a, b, c;
Derived()
:a(10), b(20), c(30)
{}
variable foo(variable var) override {
return var * a * b * c;
}
};
Подробнее здесь: [url]https://stackoverflow.com/questions/79172217/can-specific-class-types-be-altered-without-copying-a-class-in-c[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия