【问题标题】:How can I use a constructor (explicit) to convert a int type to a class?如何使用构造函数(显式)将 int 类型转换为类?
【发布时间】:2021-10-16 05:01:16
【问题描述】:

我必须创建一个使用显式构造函数将 int 类型转换为现有类的代码。

class MyClass
{public:
    MyClass(int& obj);  //I tried to use a syntax similar to a copy construct
}


int a;
MyClass a();

【问题讨论】:

  • 这不是显式构造函数。为什么它需要非常量引用? en.cppreference.com/w/cpp/language/explicit
  • 另外,MyClass a(); 应该是 MyClass myclass{a};
  • 在提出问题之前,最好先阅读一本书以了解一些基础知识(或查看您的课程笔记);顺便说一句,MyClass a(); 会声明一个名为a 的函数,如果调用该函数,它将返回一个MyClass 类型的对象。它不会像你想象的那样构造一个对象:Most vexing parse.
  • 我明白了:1) 问题本身缺少问题,2) 缺少 explicit 构造函数,以及 3) 没有尝试从 int 构造类。您可能会急于求成,在了解它们是什么之前尝试使用某些工具。

标签: c++ class constructor


【解决方案1】:
class MyClass
{
private:
    int m_value;
public:
    explicit MyClass(int value) : m_value(value) {}
};
int a = ...;
MyClass obj(a);

【讨论】:

    猜你喜欢
    • 2016-02-22
    • 1970-01-01
    • 2020-10-22
    • 2012-07-12
    • 1970-01-01
    • 2011-07-18
    • 2016-03-12
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多