C++ 如何使用指向常量值的常量指针成员正确初始化结构?

C++ 如何使用指向常量值的常量指针成员正确初始化结构?,c++,pointers,struct,constants,C++,Pointers,Struct,Constants,目前我正在做这样的事情: struct foo { const int *const a, *const b, *const c; foo(int a, int b, int c) : a(_a), b(_b), c(_c) { *_a = a; *_b = b; *_c = c; } private: int _a[1], _b[

目前我正在做这样的事情:

struct foo
{
    const int
        *const a,
        *const b, 
        *const c;

    foo(int a, int b, int c)
            : a(_a), b(_b), c(_c)
    {
        *_a = a;
        *_b = b;
        *_c = c;
    }

private:
    int _a[1], _b[1], _c[1];

};
但是,有没有一种方法可以做到这一点而不需要输入第二组指针(
\u a、\u b、\u c

但是有没有一种方法可以在不输入第二组指针(
\u a
\u b
\u c
)的情况下实现这一点

当然。您可以使用:

foo(int a, int b, int c)
        : a(new int(a)), b(new int(b)), c(new int(c)) {}
记住并适当地为
foo
实现复制构造函数、复制赋值运算符和析构函数

但是有没有一种方法可以在不输入第二组指针(
\u a
\u b
\u c
)的情况下实现这一点

当然。您可以使用:

foo(int a, int b, int c)
        : a(new int(a)), b(new int(b)), c(new int(c)) {}

请记住并适当地为
foo

实现复制构造函数、复制赋值运算符和析构函数这听起来像是XY问题。你想完成什么?@ JerryCoffin学习C++语言语法…让我重新措辞。你说:“……有没有办法做到这一点而不……”问题是“这”你想做什么?现在,我无法理解您的代码,无法理解代码应该做什么。@JerryCoffin可能有点困惑,因为范围。。。基本上,问题是如何创建指向int的新指针而不声明
int*ptr
,这听起来像是XY问题。你想完成什么?@ JerryCoffin学习C++语言语法…让我重新措辞。你说:“……有没有办法做到这一点而不……”问题是“这”你想做什么?现在,我无法理解您的代码,无法理解代码应该做什么。@JerryCoffin可能有点困惑,因为范围。。。基本上,问题是如何创建一个指向int的新指针而不声明
int*ptr
这个析构函数可能会更有趣。@Praetorian,我的理解是,他想省去
\u a
\u b
\u c
@WhozCraig,是的,它会:)是的,这正是
delete
const
指针上工作的原因,请参阅@JosephNields
~foo(){删除a,b,c;}
是非常错误的。你只删除了
a
,泄露了
b
c
。仔细阅读逗号运算符。当然,异常安全性是不存在的。如果以后的
新的
抛出,实际上没有办法释放先前分配的内存。用于此的析构函数可能会更有趣。@Praetorian,我的理解是,他想省去
\u a
\u b
\u c
@WhozCraig,是的,它会:)是的,这正是
delete
const
指针上工作的原因,请参阅@JosephNields
~foo(){删除a,b,c;}
是非常错误的。你只删除了
a
,泄露了
b
c
。仔细阅读逗号运算符。当然,异常安全性是不存在的。如果以后的
new
抛出,实际上无法释放先前分配的内存。