GNU/Linux >> Linux の 問題 >  >> Linux

文字列定数の前に予想される識別子

あなたが望むことを行うための別のより単純な方法があります:ステートメントを test tst_("Hi"); から変更するだけです test tst_{"Hi"};まで そしてそれはうまくいくでしょう。以下は変更されたコードで、期待どおりに動作します。

#include <iostream>
#include <string>
using namespace std;
class test
{
public:
    test(std::string s):str(s){cout<<"str is: "<<s;}
private:
    std::string str;
};

class test1
{
public:
    test tst_{"Hi"};
};

int main()
{   test1 obj;
    return 0;
}

test tst_("Hi"); を変更したばかりであることに注意してください test tst_{"Hi"}; まで 他のすべてはまったく同じです。これが機能することを確認するために、str変数を正しく初期化することを確認するために1つのcoutを追加しました。この 1 行のソリューションは (少なくとも私にとっては) より洗練されており、新しい標準に対応していると思います。


tst_ を初期化できません 宣言するところ。これは static const に対してのみ実行できます プリミティブ型。代わりに、class test1 のコンストラクターが必要になります。 .

編集:以下に、私が ideone.com で行った実際の例を示します。私が行ったいくつかの変更に注意してください。まず、コンストラクタは test のほうがいい constを取る string への参照 コピーを避けるために。次に、プログラムが成功した場合は return 0 する必要があります 1 ではない (return 1 の場合) ideone で実行時エラーが発生します)。

#include <iostream>
#include <string>
using namespace std;
class test
{
public:
    test(const std::string& s):str(s){};
private:
    std::string str;
};
 
class test1
{
public:
    test1() : tst_("Hi") {}
    test tst_;
};
 
int main()
{
    return 0;
}

Linux
  1. 一致した文字列のみをSedで返しますか?

  2. 文字列内のパターンを見つけるためのシェルテスト?

  3. 実行する前に再帰的なSed検索をテストして置き換えますか?

  1. in_addr_t を文字列に

  2. 毎週の cron ジョブをテストする

  3. 「inet_pton」:識別子が見つかりません

  1. 簡単なPHPメールテスト

  2. 出力を文字列に変換する

  3. 「bash -c」は何をしますか?