3

グローバル変数がC++であるため、ベクトルを持つことは可能ですか?このような:

class system {...};
vector<system> systems;

これをコンパイルしようとすると、エラーが発生します。私が使用しているコンパイラはgccで、C++としてコンパイルしています。

4

6 に答える 6

9

はい、これが好きです:

#include <vector>

class system{ ... };

std::vector<system> systems;

そのため、クラス システムの定義の後に、ベクトル グローバル var が定義されます。ベクトルを含める必要があり、ベクトルの前に (または名前空間 std を使用して) std:: を忘れないでください。

編集:私はちょうど何かを考えました。system という機能もあります。別のクラス名を試してください。

于 2009-12-11T16:32:11.860 に答える
7

system()はc-stdlib関数であるため、すでに定義されている可能性があるため、再利用することはできません。

名前を別の名前(システム?)に変更し、次回、完全なエラーメッセージを投稿します。

于 2009-12-11T16:43:51.533 に答える
3

Cygwin で g++ 3.4.4 を使用してコードをコンパイルすると、次のエラーが発生します。

test.cpp:8: エラー: 「テンプレート クラス std::vector」のテンプレート パラメーター リストの引数 1 で型/値が一致しません

test.cpp:8: エラー: 型が必要ですが、'system' を取得しました

test.cpp:8: エラー: テンプレート引数 2 が無効です

test.cpp:8: エラー: ';' の前の宣言の型が無効です トークン

問題は、クラスの名前システムです。クラスの名前を変更するか、次を使用します。

vector<class system> systems

于 2009-12-11T16:32:11.070 に答える
1

私はあなたがヘッダーファイルでそれを宣言しなかったに違いないextern

于 2009-12-11T16:40:44.620 に答える
0

エラーは、多くの場合、windows.hにあります。「システム」は「windows.h」またはそれに含まれるもので定義されます。システムコールをかける機能だと思います。

于 2009-12-11T17:12:02.923 に答える
0

これはどういう意味ですか:

#include<iostream>
#include<vector>
using namespace std;
class system{
  // class members
 };

vector<system> v;

int main()
{
   //do something
}

私のg++コンパイラでは正常に動作します。ベクトル変数をグローバルに定義することに問題はないと思いますが、お勧めしません。

于 2009-12-11T16:33:19.223 に答える