LinuxQuestions.org
Register a domain and help support LQ
Go Back   LinuxQuestions.org > Forums > Non-*NIX Forums > Programming
User Name
Password
Programming This forum is for all programming questions.
The question does not have to be directly related to Linux and any language is fair game.

Notices

Reply
 
Search this Thread
Old 02-22-2006, 02:24 PM   #1
eantoranz
Senior Member
 
Registered: Apr 2003
Location: Colombia
Distribution: Kubuntu, Debian, Knoppix
Posts: 1,982
Blog Entries: 1

Rep: Reputation: 83
Question c++: virtual methods fail compilation if.....


I want to create what in java is called an abstract class. It's a class that's not supposed to be instanced directly but has to be extended by other classes. This class has a number of methods that have to be overriden by its subclasses.

I have a virtual method in that class that returns a value of a certain type... say int. What can I do to stop the compiler from complaining if I don't return anything in that method because I don't return any value? It's going to be overriden by the subclasses, anyway! Maybe there's a way to make a method really "abstract" (C++wise) instead of just saying it's virtual and then I would force myself to do the coding in the subclass (like abstract methods do in java).
 
Old 02-22-2006, 02:43 PM   #2
dmail
Member
 
Registered: Oct 2005
Posts: 970

Rep: Reputation: Disabled
Quote:
Originally Posted by eantoranz
Maybe there's a way to make a method really "abstract" (C++wise) instead of just saying it's virtual and then I would force myself to do the coding in the subclass (like abstract methods do in java).
What your are looking for is a pure virtual function, this is what makes an abstract class and its defined like so:
Code:
class a
{
virtual foo() = 0;//pure virtual
};
 
Old 02-22-2006, 03:21 PM   #3
paulsm4
Guru
 
Registered: Mar 2004
Distribution: SusE 8.2
Posts: 5,863
Blog Entries: 1

Rep: Reputation: Disabled
Have you considered using a Java "interface" instead:

http://java.sun.com/docs/books/tutor...interface.html

And yeah, you can certainly do "abstract classes" in Java. In C++, as "dmail" pointed out, you define one or more of the functions (virtual functions, of course) as "=0". In Java, on the other hand, you simply apply the "abstract" keyword to the entire class:

http://java.sun.com/docs/books/tutor.../abstract.html

But 90% of the time, "interface" is really what you want. Of the remaining 10%, usually you'll *still* use an "interface", but then define some concrete "helper class" (one that implements your interface), that will provide default functionality, and that your users can subclass.

Last edited by paulsm4; 02-22-2006 at 03:26 PM.
 
Old 02-22-2006, 07:01 PM   #4
eantoranz
Senior Member
 
Registered: Apr 2003
Location: Colombia
Distribution: Kubuntu, Debian, Knoppix
Posts: 1,982
Blog Entries: 1

Original Poster
Rep: Reputation: 83
Yeah, I know about the abstract classes. Once you say one method is abstract in a java class, the class has to be abstract.... but I'm working on c++ right now, not java.... and I know about interfaces too (I even worked with EJBs... go figure!!!! :-D).
 
  


Reply


Thread Tools Search this Thread
Search this Thread:

Advanced Search

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is Off
HTML code is Off


Similar Threads
Thread Thread Starter Forum Replies Last Post
java -- methods -- please help Laptop2250 Programming 2 12-13-2003 12:46 AM
Other install methods? Icon Mandriva 7 11-01-2003 04:14 AM
Boot methods Nasty Linux - Newbie 1 10-11-2003 04:29 PM
search methods odious1 Linux - Newbie 4 07-10-2003 11:11 PM
Logging methods rob_roman23 Linux - General 6 08-01-2002 10:10 AM


All times are GMT -5. The time now is 07:30 PM.

Main Menu
My LQ
Write for LQ
LinuxQuestions.org is looking for people interested in writing Editorials, Articles, Reviews, and more. If you'd like to contribute content, let us know.
Main Menu
Syndicate
RSS1  Latest Threads
RSS1  LQ News
Twitter: @linuxquestions
identi.ca: @linuxquestions
Facebook: linuxquestions Google+: linuxquestions
Open Source Consulting | Domain Registration