я новичок в С++, если у меня есть объект Obj, который имеет переменную int, как Obj.var, как я могу присвоить это значение другому int с помощью оператора '='?
примечание: у меня уже есть плохо реализованный код, написанный кем-то другим, который я хотел бы использовать, не меняя его, когда Obj является универсальным, но он использовался только для int
пример ниже:
class Obj
{
public:
int var ;
};
int variable;
variable = Obj;
я ожидаю, что это произойдет:
variable = Obj.var
variable = Obj
?? Obj
- это класс, а не экземпляр... сделайте его Obj obj;
и int variable = obj.var;
Я голосую за то, чтобы закрыть этот вопрос как не по теме, потому что вопрос заключается в том, чтобы угадать, как работает язык, а не обращаться к справочнику.
Волшебное слово здесь определяемое пользователем преобразование. Но я согласен с @StoryTeller, что желание использовать это, как правило, сомнительно. Какую реальную проблему вы пытаетесь решить?
хороший вопрос, потому что у меня уже есть плохо реализованный код, написанный кем-то другим, который я хотел бы использовать, не изменяя его, когда Obj является универсальным, но он использовался только для int @StoryTeller
Если я вас правильно понял, вы можете включить в определение класса оператор преобразования.
Например
#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; }
да, похоже, спасибо за быстрый ответ! , Я это попробую
Что мешает просто написать
variable = Obj.var;
? Это намного яснее, чем закулисное вуду, чтобы «распаковать» объект.