尝试按如下方式为类初始化和设置:
class Accel
{
public:
Accel(const struct &F, const struct &m, const struct &M, const struct &I);
etc...
}
当我尝试编译时,我得到“'struct':缺少标签名称”。我正在使用某人(我信任的人)或其他人的编码“约定”,这是“const struct& ...”的来源,但如果有人知道更好的方法,那么请告诉我。
答案 0 :(得分:6)
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来创建一个你可以使用的typename而不说“struct”。)
答案 1 :(得分:1)
const struct &F
这里F
的类型是什么? struct
不是类型(在C ++中也不需要该限定符)。我相信你想要的东西:
struct Foo {};
class Accel
{
public:
Accel(const Foo &f, ...);
};
声明struct
类型的变量时, C需要struct
关键字,但即使这样,您也不能简单地省略类型名称。通常(在C中)您typedef
struct
以避免在任何地方输入struct
。
typedef struct {
char *whatever;
} my_struct;
int main() {
my_struct s;
}