堆栈变量或函数声明
stack variable or declaration of function
可能重复:
最令人烦恼的解析:为什么不;t A A(());工作
我在文件中有两个类1.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类型的全局对象。如何明确地告诉编译器这不是一个函数原型,而是一个对象?
您正在经历最麻烦的解析。
解决这个问题的一种方法是使用复制,如
RegisterRecord mockrecord_register = RegisterRecord(MockZoneRecord());
另一个是在尤里·基洛切克的回答中使用了括号。
如果您的编译器与C++11兼容,您可以使用以下结构:
RegisterRecord mockrecord_register{MockZoneRecord()};
在参数周围放括号:
RegisterRecord mockrecord_register((MockZoneRecord()));
相关文章:
- C++:为什么允许在另一个函数中声明函数,而不允许在函数定义中声明?
- 在c++中在类外声明函数有什么好处
- 使用 #define 声明函数
- 在静态库中声明函数,在使用该相同库的应用程序中定义它
- 如何强制编译器在 C/C++ 本身中声明函数?
- 如果您只需要在 .h 文件中声明函数.cpp是否需要在 .h 文件中声明函数?
- C++:<sys/sysctl.h> 无法声明函数CTL_HW和HW_NCPU
- 尝试声明函数的局部变量,但得到范围错误
- 如何在C++模板中声明函数
- 如何在另一个文件的类中声明函数
- 使用非类型模板参数正向声明函数模板
- 在此范围错误中未声明函数错误
- 当我们不能声明函数内联(GCC 编译器)时?
- 未在此作用域中声明函数,即使存在头文件也是如此
- 无法声明函数中的模板类型别名
- 单个CPP文件中多次声明函数声明可以吗?
- 编译一个支持VBA中声明函数的dll
- 使用从外部参数包中获取的参数类型声明函数
- 使用类成员正确地声明函数
- 在函数内重新声明函数