lepiej wytłumaczyć na przykładzie:przypisanie do temp const członka ref powoduje błąd segmentacji
tok.h
#include <string>
static const char* defaultDelim = ".,;";
class Tokenizer {
public:
Tokenizer():
// 'delim' is the const ref member that is initialized by the temp string
delim((altDelim.size())? altDelim : std::string(defaultDelim))
{}
size_t scan(const std::string& str)
{ return str.find_first_of(delim); }
static void setDelim(const std::string& d) { altDelim = d; }
private:
static std::string altDelim;
const std::string& delim;
};
main.cpp
#include <iostream>
using namespace std;
#include "tok.h"
std::string Tokenizer::altDelim;
int main()
{
Tokenizer tok;
size_t pos = tok.scan("hello, world");
cout << pos << endl;
}
się program wyświetla 0, która jest nieprawidłowa. Prawdziwy kod dostaje błąd seg.
Spodziewałbym się, że obowiązywałaby zasada przedłużania żywotności temp przypisanej do wartości odniesienia, ale najwyraźniej tak nie jest. Czy znasz przyczynę "?
Odłóżmy to, nie rozumiem, dlaczego nie było w tym celu żadnych loterii. Dziś powolny dzień. :( –
zwięzły i wszechstronny, dziękuję bardzo! – davka