GNU/Linux >> Znalost Linux >  >> Linux

očekávaný identifikátor před řetězcovou konstantou

Existuje další a jednodušší způsob, jak dělat to, co chcete:Stačí změnit své prohlášení z test tst_("Hi"); do test tst_{"Hi"}; a bude to fungovat. Níže je upravený kód a funguje podle očekávání.

#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;
}

Všimněte si, že jsem právě změnil test tst_("Hi");test tst_{"Hi"}; a všechno ostatní je úplně stejné. Jen pro potvrzení, že to funguje, jsem přidal jeden cout, abych zkontroloval, že správně inicializuje proměnnou str. Myslím, že toto jednořádkové řešení je elegantnější (alespoň pro mě) a aktuální s novým standardem.


Nemůžete inicializovat tst_ kde to deklarujete. To lze provést pouze pro static const primitivní typy. Místo toho budete potřebovat konstruktor pro class test1 .

EDIT:níže uvidíte funkční příklad, který jsem udělal na ideone.com. Všimněte si několika změn, které jsem provedl. Nejprve je lepší mít konstruktor test vezměte const odkaz na string abyste se vyhnuli kopírování. Za druhé, pokud program uspěje, měli byste return 0 ne 1 (s return 1 v Ideone se zobrazí chyba za běhu).

#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. Vrátit pouze odpovídající řetězec v Sed?

  2. Shell Test najít vzor v řetězci?

  3. Test shellu, zda řetězec více řádků obsahuje zadaný vzor na posledním řádku?

  1. Existuje snadný způsob, jak otestovat Ubuntu na nových noteboocích před jeho zakoupením?

  2. Jak testovat PHP skript

  3. in_addr_t do řetězce

  1. Otestujte, zda řetězec nemá v Bash znaky bez mezer

  2. 'inet_pton':identifikátor nenalezen

  3. Převeďte výstup na řetězec