带有初始值设定项的 C++ 匿名类

标签 c++ class object initialization

基于这个问题(前段时间问过)

inline-object-instantiation-and-transformation-in-java

有没有办法在不使用构造函数的情况下在单行 C++ 中实例化、对象化和初始化它的成员?

在 java 中,根据链接:

JFrame aFrame = new JFrame();
aFrame.add(new JPanel() {{
 setSize(100,100);
 setLocation(50,50);
 setBackground(Color.red);
}});

这可以用 c++ 以任何方式完成吗?

编辑:例如

class Foo{
  public:
    int test;
    int test2;

};

int main(){
    Foo foo(){{test=5 test2=4}};  //Like this
}

最佳答案

如果类是聚合(没有基类、非公共(public)成员、虚函数或用户声明的构造函数),那么您可以使用聚合初始化来初始化其成员:

struct thing {
    int a,b,c;
};

thing t = {1,2,3};

否则,它只能由构造函数初始化。

关于带有初始值设定项的 C++ 匿名类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21290901/

相关文章:

javascript - 我无法从另一个成员函数中读取成员变量

c++ - 为什么有些情况下可以省略模板参数规范?

c++ - GLSDK - 无法执行示例 OpenGL 程序

c++ - 遍历 vector 中的所有(无序)元素对

javascript - 我无法删除给容器的类

java - 自定义 Java 类加载器未用于加载依赖项?

python - 覆盖类属性但不覆盖子类中的方法

arrays - Redis reJson : JSON. ARRAYAPPEND 返回 WRONGTYPE 针对持有错误类型值的键的操作

c++ - 非STL函数对象回调使用

引用数组中对象的 C++ 共享指针