堆栈变量或函数声明
问题描述:
我在file1.h两类:
class ZoneRecord {
public:
//a lof of stuff here
};
class RegisterRecord {
public:
RegisterRecord(ZoneRecord rec); //this function register object rec in a fabric
};
而且file2.cpp有:
#include "file1.h"
class MockZoneRecord: public ZoneRecord {
public:
MockZoneRecord(): ZoneRecord() {}
};
RegisterRecord mockrecord_register(MockZoneRecord());
此代码完美编译,除了一件事。它说mockrecord_register是一个函数的声明。但我实际上想创建一个名为mockrecord_register的RegisterRecord类型的全局对象。如何明确告诉编译器这不是一个函数原型,而是一个对象?
答
您所遇到的most vexing parse。要解决这个
的一种方法是使用复制,像
RegisterRecord mockrecord_register = RegisterRecord(MockZoneRecord());
另一种是像尤里kilochek答案使用括号。
如果你的编译器是C++ 11兼容的,你可以使用此结构:如果u宣布里面主要这个对象
RegisterRecord mockrecord_register{MockZoneRecord()};
答
广场周围的括号参数:
RegisterRecord mockrecord_register((MockZoneRecord()));
只是出于好玩,做u得到这样的警告()? – 2012-08-01 09:40:02
将参数放在'()'中:'mockrecord_register(((MockZoneRecord()));' – hmjd 2012-08-01 09:40:07