
こんにちは。JavaをやっていましたがC++が必要になってC++を勉強している者です。
クラスを別のファイルに分割する際の書き方についてなのですが、
--Graph.h--
struct edge{
int to, cost;
edge(int to,int cost){
this->to = to;
this->cost = cost;
}
}
class dijkstra{
public:
vector<edge> *G;
~~~
void set_graph(int N);
void add_edge(int a, int b, int cost);
~~~
}
----
--Dijkstra.cpp--
void dijkstra::set_graph(int N){
G = new vector<edge>[N];
}
void dijkstra::add_edge(int a,int b,int cost){
G[a].push_back(edge(b,cost));
}
----
としたとき、当方の開発環境のEclipseは「push_backの引数と合わない」といった旨のエラーを出しています。何が悪いのでしょうか。ご教授お願いします。
A 回答 (4件)
- 最新から表示
- 回答順に表示
No.4
- 回答日時:
手許にあるclang++(3.0)でもまったくエラーになりません。
clang以外で、そんな「赤い下線」なんて出すコンパイラあったかな、と思って
「Invalid arguments Candidates」で検索してみました。
ざっと斜め読みしたところでは、EclipseのCDTのバグというのがありました。
それに該当しませんか?
No.2
- 回答日時:
egdeにコピー・コンストラクタ/オペレータが定義されていないからじゃないかしら。
この回答への補足
ご指摘ありがとうございます。
指摘にあったとおり、
edge(const edge& obj){
this->to = obj.to;
this->cost = obj.cost;
}
edge& operator=(const edge& obj){
this->to = obj.to;
this->cost = obj.cost;
return *this;
}
とコピーコンストラクタ、オペレータを定義致しましたが、それでも変わらないようです・・・
No.1
- 回答日時:
エラーメッセージは, 正確にはなんと書いてあるのですか? また, 出てくるメッセージはそれだけですか?
できれば「同じ問題が起きるなるべく小さなプログラム」を出してほしいんだけどね.
この回答への補足
失礼しました。こちらにコードを載せさせて頂きます。
--Graph.h--
#ifndef GRAPH_H_
#define GRAPH_H_
using namespace std;
#include <iostream>
#include <vector>
#include <algorithm>
struct edge{
int to,cost;
edge(int to,int cost){
this->to = to;
this->cost = cost;
}
};
class dijkstra{
int N;
public :
vector<edge> *G;
int dijkstra_solve();
void set_graph(int N);
void add_edge(int from,int to,int cost);
};
#endif /* GRAPH_H_ */
----
--Dijkstra.cpp--
#include <iostream>
#include <vector>
#include <algorithm>
#include "Graph.h"
using namespace std;
void dijkstra::set_graph(int N){
G = new vector<edge>[N];
}
void dijkstra::add_edge(int from,int to,int cost){
G[from].push_back(edge(to,cost));
}
----
上記のようになっておりまして、push_backに赤い下線が出てきて、
Invalid arguments '
Candidates are:
void push_back(const edge &)
'
となっております。ご教授よろしくお願いします。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
main.c:7:43: warning: implici...
-
構造体の宣言でエラーが出ます。
-
inline
-
DWORDの実際の型は何でしょうか
-
引数で argc argvが使用され...
-
visualstudio C# テキストボッ...
-
【C++クラス設計】ある関数の引...
-
C++のfor文について
-
識別子が定義されていませんと...
-
【#define】 defineで定義した...
-
変数の型を定義しなかった場合...
-
Aの値からBの値を除するとは??
-
複数桁10進数の*桁目だけを抽出...
-
「Aに対するBの割合」と「Aに対...
-
#define _CRT_SECURE_NO_WARNIN...
-
C言語での引数の省略方法
-
エクセルで可視セルにのみ値貼...
-
C言語の型による処理速度の違い
-
Enterキーを押されたら次の処理...
-
構文エラー";"が型の前にあり...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
DWORDの実際の型は何でしょうか
-
visualstudio C# テキストボッ...
-
long型の定数の末尾にLを付ける...
-
main.c:7:43: warning: implici...
-
intとINTの違いは?
-
C++のfor文について
-
2重定義って??
-
void func( void )について
-
変数の型を定義しなかった場合...
-
C言語のコンパイルエラー
-
C++でboolにintの値を代入する...
-
ハンドルされていない例外が発...
-
構造体の要素すべてに対する四...
-
構造体の宣言でエラーが出ます。
-
プログラムの中で別のmainを呼...
-
[C++]メンバ関数の仮引数について
-
0除算を判定したい
-
プログラム、どのように書いて...
-
typedef enumの使い方を教えて...
-
enumについて
おすすめ情報