0

尝试为一个类初始化和设置如下:

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

    etc...
}

当我尝试编译时,我得到“'struct': missing tag name”。我正在使用其他人(我信任的人)的编码“约定”,这是“const struct &...”的来源,但如果有人知道更好的方法,请告诉我。

4

2 回答 2

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 来创建一个你可以使用的类型名,而不用说“struct”。 )

于 2012-06-23T19:07:25.820 回答
1
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;
}
于 2012-06-23T19:06:17.237 回答