6

これが少しナイーブに思えるかもしれませんが、私は C++ の初心者であり、C と Java に何年も携わってきたので、頭が少し混乱していると思います。

作成したノードでいっぱいの未知のサイズの配列を作成しようとしています。

node *aNode = new node(14,32);
std::list<node> dataSet;
std::list<node>::iterator it;
it = dataSet.begin();
dataSet.insert(it, aNode)

ただし、これをコンパイルすると (概念実証テスト)、拒否され、あらゆる種類のエラーがスローされます。

私はそれが単純なことだと知っていますが、それを理解することはできません。誰でも助けることができますか?前もって感謝します!

編集:ここにノードがあります:

class node{
    float startPoint;
    float endPoint;
    float value;
public:
    node(float, float);
    void setValues(float, float);
};

node::node(float start, float end){
    startPoint = start;
    endPoint = end;
}

およびコンパイラ エラー:

エラー C4430: 型指定子がありません - int と見なされます。注: C++ は default-int をサポートしていません

エラー C2371: 'it': 再定義。さまざまな基本タイプ

エラー C2440: '初期化中': 'std::list<_Ty>::_Iterator<_Secure_validation>' から 'int' に変換できません

エラー C2146: 構文エラー: ';' がありません 識別子「dataSet」の前

エラー C2143: 構文エラー: ';' がありません 前 '。'

エラー C4430: 型指定子がありません - int と見なされます。注: C++ は default-int をサポートしていません

エラー C2371: 'dataSet': 再定義。さまざまな基本タイプ

更新:少しのコードを次のように変更しました:

 node aNode(14, 32);
 std::list<node> dataSet;
 dataSet.insert(dataSet.begin(), aNode);

ただし、これらの 3 つのエラーは残ります。

 error C2143: syntax error : missing ';' before '.'
 error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
 error C2371: 'dataSet' : redefinition; different basic types
4

5 に答える 5

7

リストは型であるstd::list<node*>か、またはノード オブジェクトを挿入する必要があります (ノード オブジェクトへのポインターではありません)。

node *aNode = new node(14, 32);
std::list<node*> dataSet;
dataSet.insert(dataSet.begin(), aNode);

また

node aNode(14, 32);
std::list<node> dataSet;
dataSet.insert(dataSet.begin(), aNode);
于 2013-08-01T16:27:17.737 に答える
1

ノードポインターを含むようにリストを宣言する必要があるようです。つまり、次のようになります。

std::list<node*> dataSet
std::list<node*>::iterator it;

また、イテレータを使用せずに項目をリストに追加できることにも注意してください。

dataSet.push_back(aNode);
于 2013-08-01T16:27:21.373 に答える
1

aNode は、ヒープ上のノード オブジェクトへのポインターです。

dataSet は次のように定義する必要があります。

std::list<node*> dataSet;

イテレータと同じ:

std::list<node*>::iterator it;
于 2013-08-01T16:28:45.247 に答える
0

「型指定子がありません - int が想定されています」は、欠落が原因である可能性があります

#include <list>

または行方不明

#include "header for node"

于 2013-08-01T17:47:26.080 に答える
0

最後の括弧の後にセミコロンがないことを投稿したコードについて

試す

dataSet.insert(it, aNode);
于 2013-08-01T16:27:46.293 に答える