グローバル変数がC++であるため、ベクトルを持つことは可能ですか?このような:
class system {...};
vector<system> systems;
これをコンパイルしようとすると、エラーが発生します。私が使用しているコンパイラはgccで、C++としてコンパイルしています。
はい、これが好きです:
#include <vector>
class system{ ... };
std::vector<system> systems;
そのため、クラス システムの定義の後に、ベクトル グローバル var が定義されます。ベクトルを含める必要があり、ベクトルの前に (または名前空間 std を使用して) std:: を忘れないでください。
編集:私はちょうど何かを考えました。system という機能もあります。別のクラス名を試してください。
system()
はc-stdlib関数であるため、すでに定義されている可能性があるため、再利用することはできません。
名前を別の名前(システム?)に変更し、次回、完全なエラーメッセージを投稿します。
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
私はあなたがヘッダーファイルでそれを宣言しなかったに違いないextern
エラーは、多くの場合、windows.hにあります。「システム」は「windows.h」またはそれに含まれるもので定義されます。システムコールをかける機能だと思います。
これはどういう意味ですか:
#include<iostream>
#include<vector>
using namespace std;
class system{
// class members
};
vector<system> v;
int main()
{
//do something
}
私のg++コンパイラでは正常に動作します。ベクトル変数をグローバルに定義することに問題はないと思いますが、お勧めしません。