Операторы в С++: как присвоить значение переменной из внутреннего объекта переменной int с помощью операторов в С++

я новичок в С++, если у меня есть объект Obj, который имеет переменную int, как Obj.var, как я могу присвоить это значение другому int с помощью оператора '='?

примечание: у меня уже есть плохо реализованный код, написанный кем-то другим, который я хотел бы использовать, не меняя его, когда Obj является универсальным, но он использовался только для int

пример ниже:

class Obj

{

public:

    int var ; 
};

int variable;

variable = Obj;

я ожидаю, что это произойдет:

variable = Obj.var

Что мешает просто написать variable = Obj.var; ? Это намного яснее, чем закулисное вуду, чтобы «распаковать» объект.

StoryTeller - Unslander Monica 13.06.2019 13:36
variable = Obj ?? Obj - это класс, а не экземпляр... сделайте его Obj obj; и int variable = obj.var;
463035818_is_not_a_number 13.06.2019 13:36

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

463035818_is_not_a_number 13.06.2019 13:37

Волшебное слово здесь определяемое пользователем преобразование. Но я согласен с @StoryTeller, что желание использовать это, как правило, сомнительно. Какую реальную проблему вы пытаетесь решить?

Max Langhof 13.06.2019 13:37

хороший вопрос, потому что у меня уже есть плохо реализованный код, написанный кем-то другим, который я хотел бы использовать, не изменяя его, когда Obj является универсальным, но он использовался только для int @StoryTeller

user168484 13.06.2019 13:38
Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
2
5
247
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Если я вас правильно понял, вы можете включить в определение класса оператор преобразования.

Например

#include <iostream>

class Obj
{
public:
    operator int() const { return var; }
    int var ; 
};


int main()
{
    Obj obj = { 10 };

    int variable = obj;

    std::cout << "variable = " << variable << '\n';
}

Вывод программы

variable = 10

Или оператор может быть определен также как

operator const int &() const { return var; }

да, похоже, спасибо за быстрый ответ! , Я это попробую

user168484 13.06.2019 13:42

Другие вопросы по теме