Const w klasie abstrakcyjnej

0

Witam w jaki sposob zainicjowac i ogolnie stworzyc zmienna const int w klasie abstrakcyjnej, ale w taki sposob aby kazda klasa dziedziczona po niej mogla ustawic swoja wlasna wartosc.

np: dla lepszego zrozumienia ;)

class abstrakcyjna
{
protected:
const int stala; // jak ja zainicjowac?

}

class A1: public abstrakcyjna
{
jak tutaj zmienic zmienic wartosc stalej?
}

2
#include <iostream>

class Base {
	public:
		Base(int foo_val):
			foo(foo_val) 
		{
			;	
		}
	
	protected:
		int getfoo() const { return foo; }
	
	private:
		const int foo;
};

class Derived : Base {
	public:
		Derived(): Base(10) { ; }
		
		void Display(std::ostream& out) const {
			out << getfoo();
		}
};

int main() {
	Derived d;
	d.Display(std::cout);
	return 0;
}

http://ideone.com/XcNrtN

2

Można jeszcze tak jeśli stała znana jest w momencie kompilacji:

#include <iostream>
using namespace std;
 
template<int stala>
class Bazowa
{
  protected:
  Bazowa() : foo(stala) {}
  const int foo;
};
 
class A : public Bazowa<5>
{
  public: void WypiszMojaStala() { cout << foo << endl; }
};
 
int main()
{
  A a;
  a.WypiszMojaStala();
  return 0;
}
0

a idzie to zrobic jakos bez konstruktora, mam na mysli czy idzie na sztywno zmienic w klasach pochodnych ta stala? Bo konstruktory nie wchodza w gre bo w zbyt wielu miejscach w programie musialbym dodac ta informacje...

1 użytkowników online, w tym zalogowanych: 0, gości: 1