0

boost::program_options に問題がある

私はクラスを持っています

namespace po = boost::program_options;
class imageProcess{
private:
    po::options_description options;
public:
    imageProcess(int argc,char** argv){
        po::options_description desc("Allowed options");
        this->options = desc;

次のエラーが表示されます。

非静的 const メンバー 'const unsigned int boost::program_options::options_description::m_min_description_length'、デフォルト代入演算子 imgproc 行 163 を使用できません、外部の場所: /usr/include/boost/program_options/options_description.hpp C/C++問題の非静的 const メンバー 'const unsigned int boost::program_options::options_description::m_line_length'、デフォルトの代入演算子 imgproc 行 163 を使用できない、外部の場所: /usr/include/boost/program_options/options_description.hpp C/ C++ 削除された関数 'boost::program_options::options_description& boost::program_options::options_description::operator=(const boost::program_options::options_description&)' の使用に関する問題 imageProcess.cpp /imgproc/src 20 行目 C/C++ の問題

po::options_description のオプション フィールド インスタンスを作成するにはどうすればよいですか?

編集: options フィールドが既にインスタンスであることは知っていますが、このフィールドを定義した後に「許可されたオプション」という説明を設定する方法はありますか? また、以前に作成したオブジェクトのインスタンスをクラス フィールドに格納するにはどうすればよいですか?

4

1 に答える 1

5

エラーを読んでください:

非静的constメンバー'<code>const unsigned int boost :: program_options :: options_description :: m_min_description_length'、デフォルトの代入演算子を使用できません

非静的constメンバー'<code>const unsigned int boost :: program_options :: options_description :: m_line_length'、デフォルトの代入演算子を使用できません

削除された関数の使用'<code>boost :: program_options :: options_description&boost :: program_options :: options_description :: operator =(const boost :: program_options :: options_description&)' </ p>

内のメンバーが原因で、Boostのバージョン(実際にはv1.33以降)でboost::program_options::options_description代入演算子がサポートされていないoperator=ことを示しています。constoptions_description

ctor-initializerを使用してインスタンスを初期化する必要があります(とにかくそうする必要があります) 。options_description

namespace po = boost::program_options;
class imageProcess{
private:
    po::options_description options;
public:
    imageProcess(int argc, char** argv);
};

imageProcess::imageProcess(int argc, char** argv)
   : options("Allowed options")
{}

行の開始:は、メンバーのコンストラクター引数が移動する場所optionsです。

于 2013-01-06T00:04:01.053 に答える