Posted By: kurt (kurt) on 'CZprogram'
Title: C++ const
Date: Thu Sep 20 17:07:38 2001
nevim si rady s nasleduji konstrukci
class holder
{
char *ptr;
public:
holder(char *pp) { ptr = strdup(pp); }
};
class const_holder
{
const char *ptr;
public:
const_holder(const char *pp) { ptr = (pp); }
};
class Ptr
{
char * data;
public:
Ptr() { data = strdup("test test"); }
holder getdata() { return data; }
const_holder getdata() const { return data; }
};
main()
{
Ptr p;
const_holder x = p.getdata();
}
Pokus o preklad konci s chybou
g++ a.cc -o a
a.cc: In function `int main()':
a.cc:36: conversion from `holder' to non-scalar type `const_holder' requested
nevim, jakym zpusobem prekladac prinutit aby vzal tu const metodu getdata.
v stl je toho plno a funguje to ikdyz mi neni jasny rozdil mezi tim,
co delam ja a co je v STL.
typicky je tam
iterator begin() { return ... }
const_iterator begin() const { return ... (totez co ve fci vys); }
ale vyraz
typedef vector<int> V;
V vect;
V::const_iterator = vect.begin(); // funguje bez problemu
dik za napady,
libor
V::con