Return Styles: Pseud0ch, Terminal, Valhalla, NES, Geocities, Blue Moon. Entire thread

why seeples no interfaces?

Name: Anonymous 2012-01-14 0:50


#include<iostream>

using namespace std;

class A {
public:

  A() {
  }

  virtual ~A() {
  }

  void waka() {
    cout << "WakA!";
  }

};


class IWoopaWaka {
public:
  IWoopaWaka() {
  }

  virtual ~IWoopaWaka() {
  }

  virtual void waka() = 0;
  virtual void woopa() = 0;
};

class B : public IWoopaWaka, public A {
public:
  B() : A() {
  }

  virtual ~B() {
  }

  void woopa() {
    cout << "Woooopa!";
  }
};


int main(int argc, char** argv) {
  IWoopaWaka* wapa = new B();
  wapa->waka();
  wapa->woopa();
  delete wapa;
  return 0;
}


$g++ m.cpp
m.cpp: In function ‘int main(int, char**)’:
m.cpp:49: error: cannot allocate an object of abstract type ‘B’
m.cpp:34: note:   because the following virtual functions are pure within ‘B’:
m.cpp:30: note:         virtual void IWoopaWaka::waka()


#include<iostream>

using namespace std;

class A {
public:

  A() {
  }

  virtual ~A() {
  }

  void waka() {
    cout << "WakA!";
  }

};


class IWoopaWaka {
public:
  IWoopaWaka() {
  }

  virtual ~IWoopaWaka() {
  }

  virtual void waka() = 0;
  virtual void woopa() = 0;
};

class B : public IWoopaWaka, public A {
public:
  B() : A() {
  }

  virtual ~B() {
  }

  void waka() {
    A::waka();
  }

  void woopa() {
    cout << "Woooopa!";
  }
};


int main(int argc, char** argv) {
  IWoopaWaka* wapa = new B();
  wapa->waka();
  wapa->woopa();
  delete wapa;
  return 0;
}


$g++ m.cpp
$a.out
WakA!Woooopa!$

Name: Anonymous 2012-01-14 2:09

>>11

well, from what I have read a while eago, it was somzing leik:

interface IWakaWoopa {
  void waka();
  void woopa();
}

begin equivalnet ta:

abstract class IWakaWoopa {
  abstract public void waka();
  abstract public void woopa();
}

cept ders da real unfortunate effect of not bein aba ta do da:

class B extends A implements IWakaWoopa {


A.java:20: interface expected here
class B extends A implements IWoopaWaka {
                             ^


aww shucks.

Some one would think that maybe,


class IWakaWoopa {
public:
  virtual ~IWakaWoopa() {}
  virtual void waka() = 0;
  virtual void woopa() = 0;
}


would be equivalent, but what do ya know, it ain't. An that makes me feel darn rotten.

Newer Posts
Don't change these.
Name: Email:
Entire Thread Thread List