OS: XP
IDE: VS 2008
ビジュアル C++ で行っているプロジェクトでは、std::vector
内部マネージド クラスを宣言しました。
std::vector<pts> dataPoints;//this gives error c4368 : mixed type not allowed
しかし、これは機能します
std::vector<pts> * dataPoints;//a pointer to the vector
次に、マネージ クラスのコンストラクターと同様に、フリー ストアにこのベクターを作成しました。
dataPoints = new std::vector<pts>(noOfElements,pts());//which is not so attractive.
ベクトルが必要な理由は、読み込んでifstream
それらの値をベクトルに格納するファイルがあるためです。
Q1)ネイティブ型のオブジェクトへのポインタを宣言できるのはなぜですか(私は推測します)、オブジェクトではありませんか? さらに、ベクトルを試す前に、マネージド配列を試してみました
cli::array<Point> dataPoints //and i defined it later.
しかし、私がこれを行うとき
ifile >> dataPoints[i].X;
エラー c2678 : operator= is not overloaded for int
!!. が発生します。
Q2) ここでマネージド コードを使用できないのはなぜですか。最初はラッパークラス Int かもしれないと思っていましたが、自動アンボックス化 (変換演算子) で処理する必要がありますか?それとも、Point::X が修飾property
されているため、正常に認識されないのint
でしょうか? 私は何が欠けていますか?これが私が行った理由vector
とpts
解決策です。
pts
以下のとおりであります
struct pts
{
int X, int Y;
pts() : X(0),Y(0){}
pts(int x,int y) : X(x),Y(y){}
};//this i created to store the data from the file.