我问了这个问题:Array Equivalent of Bare-String
答案是 C++ 没有为const int*
s 提供这个功能。这是令人失望的。所以我的问题是:在实践中我如何绕过这个限制?
我想写一个这样的结构:
struct foo{
const char* letters = "abc";
const int* numbers = ???
};
我不能:
&{1, 2, 3}
因为我无法获取 r 值的地址array<int, 3>{{1, 2, 3}}.data()
导致初始化后立即清理内存const int* bar(){ return new int[3]{1, 2, 3}; }
因为什么都不会删除这个指针
我知道我可以使用自动指针来解决这个问题。我并不是说这struct foo
是好的代码,我试图说明编译器规定将 const 数组"abc"
存储在内存中并在程序退出时清理它,我也希望有一种方法可以为int
s 做到这一点。
有没有办法做到这一点?