GNU/Linux >> Belajar Linux >  >> Linux

pengenal yang diharapkan sebelum konstanta string

Ada cara lain yang lebih sederhana untuk melakukan apa yang Anda inginkan:Ubah saja pernyataan Anda dari test tst_("Hi"); ke test tst_{"Hi"}; dan itu akan berhasil. Di bawah ini adalah kode yang dimodifikasi dan berfungsi seperti yang diharapkan.

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

Perhatikan bahwa saya baru saja mengubah test tst_("Hi"); ke test tst_{"Hi"}; dan yang lainnya persis sama. Hanya untuk konfirmasi bahwa ini berfungsi, saya telah menambahkan satu cout untuk memeriksa apakah ini menginisialisasi variabel str dengan benar. Menurut saya, solusi satu baris ini lebih elegan (setidaknya bagi saya) dan terkini dengan standar baru.


Anda tidak dapat menginisialisasi tst_ tempat Anda mendeklarasikannya. Ini hanya dapat dilakukan untuk static const tipe primitif. Sebagai gantinya, Anda harus memiliki konstruktor untuk class test1 .

EDIT:di bawah, Anda akan melihat contoh kerja yang saya lakukan di ideone.com. Perhatikan beberapa perubahan yang saya lakukan. Pertama, lebih baik memiliki konstruktor test ambil const referensi ke string untuk menghindari penyalinan. Kedua, jika program berhasil Anda harus return 0 bukan 1 (dengan return 1 Anda mendapatkan kesalahan runtime di 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. Hanya Mengembalikan String yang Cocok Di Sed?

  2. Tes Shell Untuk Menemukan Pola Dalam String?

  3. Cara menguji skrip PHP

  1. Uji apakah string memiliki karakter non spasi di Bash

  2. Ubah output menjadi string

  3. Apa yang dilakukan 'bash -c'?

  1. Tes Surat PHP sederhana

  2. Tes Shell Apakah Beberapa Baris String Berisi Pola Tertentu Di Baris Terakhir?

  3. Uji Pencarian Dan Ganti Sed Rekursif Sebelum Menjalankan?