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

Search the boards