尝试为一个类初始化和设置如下:
class Accel
{
public:
Accel(const struct &F, const struct &m, const struct &M, const struct &I);
etc...
}
当我尝试编译时,我得到“'struct': missing tag name”。我正在使用其他人(我信任的人)的编码“约定”,这是“const struct &...”的来源,但如果有人知道更好的方法,请告诉我。
struct
是 C++ 中的关键字;它不能用作类型名称。改用别的东西:
class Dennis;
struct Janet; // "struct" is pretty much identical to "class"
class Accel
{
public:
Accel(const Dennis & F, const Dennis & m, const Janet & j) { /* ... */ }
// ...
};
(C++ 中的类型命名与其他语言中的不同,例如 C。在 C++ 中你说,,class Dennis; Dennis x;
而在 C 中你必须说struct Janet; struct Janet y;
,或者使用 typedef 来创建一个你可以使用的类型名,而不用说“struct”。 )
const struct &F
这里的类型是F
什么? struct
不是类型(在 C++ 中也不需要该限定符)。我相信您想要以下内容:
struct Foo {};
class Accel
{
public:
Accel(const Foo &f, ...);
};
Cstruct
在声明struct
类型的变量时需要关键字,但即便如此,您也不能简单地省略类型名称。通常(在 C 中)你会typedef
避免struct
到处打字struct
。
typedef struct {
char *whatever;
} my_struct;
int main() {
my_struct s;
}