【发布时间】:2012-12-01 02:15:41
【问题描述】:
这是我面临的一个奇怪问题 - 考虑到我生疏的 C++ 技能,这可能是一些超基本的问题,但我仍然感到困惑:
- 我有课
- 我们在这个类中还有一个
unsigned long longs 数组——我们称之为arr
我的班级界面:
typedef unsigned long long U64;
class DQClass
{
public:
DQClass (void);
virtual ~DQClass (void);
U64 arr[12];
};
现在说到实现……
测试 1(有效):
DQClass::DQClass (void)
{
this->arr[0] = 0x8100000000000000ULL;
this->arr[1] = 0x4200000000000000ULL;
// and so on..
}
测试 2(这不是):
DQClass::DQClass (void)
{
this->arr =
{
0x8100000000000000ULL,
0x4200000000000000ULL,
0x2400000000000000ULL,
0x1000000000000000ULL,
0x0800000000000000ULL,
0x00FF000000000000ULL,
FLIPV(0x8100000000000000ULL),
FLIPV(0x4200000000000000ULL),
FLIPV(0x2400000000000000ULL),
FLIPV(0x1000000000000000ULL),
FLIPV(0x0800000000000000ULL),
FLIPV(0x00FF000000000000ULL)
};
}
错误:
dqclass.cpp: In constructor ‘DQClass::DQClass()’:
dqclass.cpp:28: error: expected primary-expression before ‘{’ token
dqclass.cpp:28: error: expected `;' before ‘{’ token
为什么这不起作用?它不应该以与例如相同的方式工作吗? U64 someArr[12] = {0,1,2,3,4,5,6,7,8,9,10,11}会吗?
有什么想法吗?
【问题讨论】:
-
如果将
{移动到与=相同的行怎么办? -
@NahumLitvin 如果这样的方法有效,我会感到非常惊讶......不,它没有。
-
数组在 C++ 中被破坏(因为它们在 C 中被破坏)。这就是为什么发明了
std::vector和std::array这样的东西。
标签: c++ c arrays gcc constructor