C ++ const struct& variable产生缺少的标记名称

时间:2012-06-23 19:03:22

标签: c++ struct const

尝试按如下方式为类初始化和设置:

class Accel
{
public:
    Accel(const struct &F, const struct &m, const struct &M, const struct &I);

    etc...
}

当我尝试编译时,我得到“'struct':缺少标签名称”。我正在使用某人(我信任的人)或其他人的编码“约定”,这是“const struct& ...”的来源,但如果有人知道更好的方法,那么请告诉我。

2 个答案:

答案 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;
}