0

次のように、クラスの初期化と設定を試みます。

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

    etc...
}

コンパイルしようとすると、「'struct':タグ名がありません」というメッセージが表示されます。私は他の誰か(私が信頼している)のコーディング「規約」を使用しています。これは「conststruct&...」の由来ですが、誰かがそれを行うためのより良い方法を知っている場合は、私に知らせてください。

4

2 に答える 2

6

structC++のキーワードです。タイプ名として使用することはできません。代わりに他のものを使用してください:

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, ...);
};

Cは型structの変数を宣言するときにキーワードを必要としますstructが、それでも型名を単純に省略することはできません。通常(Cでは)どこでも入力しないようtypedefにします。structstruct

typedef struct {
    char *whatever;
} my_struct;

int main() {
    my_struct s;
}
于 2012-06-23T19:06:17.237 に答える