Dependent Origination

Forward declaration of a class with namespace

Posted on: July 4, 2012

I saw code like this in a header file:

namespace X {

class Y;

}

I thought that was wieldy and changed it to

class X::Y;

Guess what? It wouldn’t compile!

The reason? Here. In short, C++ only allows fully-qualified names refering to existing (previously declared) entities. They cannot be used to declare new entities. Once you have this wieldy forward declaration, you can reference it in fully qualified name subsequently. I guess the tricky point here is the compiler couldn’t figure out whether X is a class or a namespace for a form of X::Y.

Advertisements

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

July 2012
M T W T F S S
« Jun   Aug »
 1
2345678
9101112131415
16171819202122
23242526272829
3031  

Twitter

  • is reflecting on the past three years and reading the article on divided self aptly showing up at the top of my tweeter feed. 2 months ago
  • is having a nice feeling of connecting dots all over the place. they are now illuminating the same point. 3 months ago
  • Style Transfer is fun! TensorFlow rocks! #WTM17 https://t.co/zYP0IFIDfp 5 months ago
  • couldn't get over the jetlag, sleeping during the day from seven to four, for days. 7 months ago
  • is emptying trash and happily discovering the available disk space now ranks at 100G+. 8 months ago

Flickr Photos

%d bloggers like this: