) 私は解決するのが非常に簡単かもしれない問題がありますが、C++で適切な形式を見つけることができません。 与えられたヘッダファイルの別のクラスのオブジェクトを宣言したいと思います。残念ながら、私はエラーを取得する:別のヘッダファイル内のオブジェクトの宣言
cc1plus: warning: command line option ‘-Wstrict-prototypes’ is valid for C/ObjC but not for C++ [enabled by default]
calc/solver_nonl/new_raphs.cpp: In constructor
‘new_raphs::new_raphs(Eigen::MatrixXd, Eigen::MatrixXd, Eigen::MatrixXd, Eigen::MatrixXd, Eigen::MatrixXd)’:
calc/solver_nonl/new_raphs.cpp:7:44: error: no matching function for call to ‘stiff_nonl::stiff_nonl()’
:set_force(node_matrix,dof_matrix_input)
^
calc/solver_nonl/new_raphs.cpp:7:44: note: candidates are:
In file included from calc/solver_nonl/new_raphs.h:8:0,
from calc/solver_nonl/new_raphs.cpp:1:
calc/solver_nonl/../fem_nonl/stiff_nonl.h:20:5: note: stiff_nonl::stiff_nonl(Eigen::MatrixXd, Eigen::MatrixXd, Eigen::MatrixXd, Eigen::MatrixXd)
stiff_nonl(MatrixXd node_matrix, MatrixXd dof_matrix_input, MatrixXd element_matrix, MatrixXd element_info_matrix);
^
calc/solver_nonl/../fem_nonl/stiff_nonl.h:20:5: note: candidate expects 4 arguments, 0 provided
calc/solver_nonl/../fem_nonl/stiff_nonl.h:17:7: note:
stiff_nonl::stiff_nonl(const stiff_nonl&)
class stiff_nonl : public set_force
^
calc/solver_nonl/../fem_nonl/stiff_nonl.h:17:7: note: candidate expects 1 argument, 0 provided
calc/solver_nonl/new_raphs.cpp: In member function ‘Eigen::MatrixXd& new_raphs::get_epsilon_results(int, int)’:
calc/solver_nonl/new_raphs.cpp:92:1: warning: no return statement in function returning non-void [-Wreturn-type]
}
^
error: command 'x86_64-linux-gnu-gcc' failed with exit status 1
make: *** [all] Fehler 1
私は、多くの場合、前に別のクラスのオブジェクトを宣言しているが、私がここで間違って何をやっていますか?次のように
ヘッダファイルに見える:
#ifndef NEW_RAPHS_H
#define NEW_RAPHS_H
# include "../../pre/boundary_force/set_force.h"
# include <iostream>
#include "../fem_lin/stiff.h"
#include "../fem_nonl/stiff_nonl.h"
using namespace std;
class new_raphs : set_force
{
public:
new_raphs(MatrixXd node_matrix, MatrixXd dof_matrix_input, MatrixXd element_matrix, MatrixXd element_info_matrix, MatrixXd force_matrix_input);
MatrixXd elements;
MatrixXd elements_info;
MatrixXd force_matrix;
void calc();
VectorXd U;
MatrixXd res;
MatrixXd result_matrix;
MatrixXd &get_result();
stiff_nonl stiffness_nonl; // here is the bug!
MatrixXd &get_epsilon_results(int noe, int num_gauss_point);
};
#endif // NEW_RAPHS_H
彼はobviousely宣言のようにdoesntのstiff_nonl stiffness_nonl。 ??? stiff_nonlクラスが別のクラスから継承することは何かを持っていますか?宣言でこれを考慮する必要がありますか?
C++チェッカーの方が私を助けてくれますか?
事前に感謝します。
いいえフランク
が '' stiff_nonl(引数なしで)デフォルトコンストラクタを与えるか、適切な引数は、おそらくあなたの問題を解決します...私には少し奇妙です。注意:型を命名する際に各単語の最初の文字を捕捉するのが一般的です。 'stiff_nonl'はおそらく' Stiff_Nonl'です。 – George
おそらくstiffness_nonlをnew_raphsのコンストラクタの初期化リストに追加すると助けになります(Georgeが示すように問題とは若干異なる) – stefaanv