gpt4 book ai didi

c++ - 将常量传递给 C++ 构造函数

转载 作者:太空狗 更新时间:2023-10-29 20:02:22 25 4
gpt4 key购买 nike

我有一个构造函数接收整数的类:

class One
{
public:
One(int i)
{
foo(i);
}

void foo(int i)
{
// Do something with i
}
};

以上编译正常。

我有一个第二类,它有一个类型为一的成员。编译它会导致我传递 int 的错误(错误是“预期类型说明符”):

class Two
{
public:
One x(1);
};

但是,如果成员是指针,我可以对其进行初始化:

class Three
{
public:
One *x = new One(1);
};

我可以不使用指针来初始化类吗?

谢谢!

最佳答案

与:

class Two
{
public:
One x(1);
};

并且根据语言规则,编译器尝试将 x 解析为返回 One 类型对象的成员函数,而不是看到有效的参数-声明,它至少需要一个包含 0 个或多个类型说明符的列表,它会看到一个非类型

class Three
{
public:
One *x = new One(1);
};

Can I initialize the class without using a pointer?

是的,对 value-initialization 使用uniform-b​​race-initialization 语法:

class Three
{
public:
One x{1};
};

copy-initialization :

class Three
{
public:
One x = 1; //Uses converting constructor,
//see http://en.cppreference.com/w/cpp/language/converting_constructor

//or
One x = One(your, multiple, arguments, here);
};

member-initializer-lists在构造函数中:

class Three
{
public:
Three(...) : x(1) { ... }
One x;
...
};

关于c++ - 将常量传递给 C++ 构造函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41665904/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com