C2512: no appropriate default constructor available
-
Hello guys, I'm trying to write a simple class in c++ including a short constructor. Despite the fact that there are no obvious mistakes, there's always the same error message C2512: no appropriate default constructor available I do not call the default constructor, but my self written one, also the parameter lists match. Does anyone already know this problem? If not I can post the listings. Thanks and best wishes.
-
Hello guys, I'm trying to write a simple class in c++ including a short constructor. Despite the fact that there are no obvious mistakes, there's always the same error message C2512: no appropriate default constructor available I do not call the default constructor, but my self written one, also the parameter lists match. Does anyone already know this problem? If not I can post the listings. Thanks and best wishes.
If you've written a constructor with parameters, it is not called default constructor. Default constructor is one with no parameters. The object you're creating from the class probably needs a default constructor.
«_Superman_» I love work. It gives me something to do between weekends.
Microsoft MVP (Visual C++) -
Hello guys, I'm trying to write a simple class in c++ including a short constructor. Despite the fact that there are no obvious mistakes, there's always the same error message C2512: no appropriate default constructor available I do not call the default constructor, but my self written one, also the parameter lists match. Does anyone already know this problem? If not I can post the listings. Thanks and best wishes.
Austrian_Programmer wrote:
Does anyone already know this problem?
Yes, provide a default constructor (one accepting no arguments). If that does not work, see here.
"One man's wage rise is another man's price increase." - Harold Wilson
"Fireproof doesn't mean the fire will never come. It means when the fire comes that you will be able to withstand it." - Michael Simmons
"Man who follows car will be exhausted." - Confucius
-
If you've written a constructor with parameters, it is not called default constructor. Default constructor is one with no parameters. The object you're creating from the class probably needs a default constructor.
«_Superman_» I love work. It gives me something to do between weekends.
Microsoft MVP (Visual C++)A default constructor is one provided by the compiler -- if you write one that takes no parameters it's not a default constructor. Edit: Oh, I see, I wound up in the C++ forum somehow... :~ In C#, "default constructor" actually means something more than "parameterless constructor": " 10.10.4 Default constructors If a class contains no instance constructor declarations, a default instance constructor is automatically provided. "
modified on Tuesday, April 27, 2010 6:00 PM
-
A default constructor is one provided by the compiler -- if you write one that takes no parameters it's not a default constructor. Edit: Oh, I see, I wound up in the C++ forum somehow... :~ In C#, "default constructor" actually means something more than "parameterless constructor": " 10.10.4 Default constructors If a class contains no instance constructor declarations, a default instance constructor is automatically provided. "
modified on Tuesday, April 27, 2010 6:00 PM
The C++ standard defines that "a default constructor is a constructor that can be called without arguments". (ISO/IEC 14882)
Webchat in Europe :java: Now with 26% more Twitter
-
Hello guys, I'm trying to write a simple class in c++ including a short constructor. Despite the fact that there are no obvious mistakes, there's always the same error message C2512: no appropriate default constructor available I do not call the default constructor, but my self written one, also the parameter lists match. Does anyone already know this problem? If not I can post the listings. Thanks and best wishes.
Austrian_Programmer wrote:
I do not call the default constructor, but my self written one, also the parameter lists match.
Since you've written one constructor the compiler provide no more the default one (that is sometimes required). Probably you should write the default constructor for your class (i.e. please report the exact error message and the offending line content). :)
If the Lord God Almighty had consulted me before embarking upon the Creation, I would have recommended something simpler. -- Alfonso the Wise, 13th Century King of Castile.
This is going on my arrogant assumptions. You may have a superb reason why I'm completely wrong. -- Iain Clarke
[My articles] -
A default constructor is one provided by the compiler -- if you write one that takes no parameters it's not a default constructor. Edit: Oh, I see, I wound up in the C++ forum somehow... :~ In C#, "default constructor" actually means something more than "parameterless constructor": " 10.10.4 Default constructors If a class contains no instance constructor declarations, a default instance constructor is automatically provided. "
modified on Tuesday, April 27, 2010 6:00 PM
You are wrong. The default constructor is the constructor without arguments. Incidentally, if you don't write any constructor for your class then the compiler provides the default constructor for you. :)
If the Lord God Almighty had consulted me before embarking upon the Creation, I would have recommended something simpler. -- Alfonso the Wise, 13th Century King of Castile.
This is going on my arrogant assumptions. You may have a superb reason why I'm completely wrong. -- Iain Clarke
[My articles] -
Hello guys, I'm trying to write a simple class in c++ including a short constructor. Despite the fact that there are no obvious mistakes, there's always the same error message C2512: no appropriate default constructor available I do not call the default constructor, but my self written one, also the parameter lists match. Does anyone already know this problem? If not I can post the listings. Thanks and best wishes.
The other side of the story is that, you can prevent a constructor being called (implicitly or explicitly) other than what you have provided.
-
The other side of the story is that, you can prevent a constructor being called (implicitly or explicitly) other than what you have provided.
-
I wrote a default constructor (empty and parameterless) and now it works. However, I do not know why; the default constructor is never called. By the way, I know that a default constructor is not any self written one^^
If you can provide a sample code, it will help to understand the problem well. Hope, your problem might be like the following one. class CTest { public: CTest( int a ) // since there is a constructor, the compiler won't generate // the default (no-argument) constructor. { } }; int main() { CTest Object; // Here, we are trying to invoke the no-argument constructor. // So the error C2512 comes. // To solve the problem, define a no-artument constructor. // CTest Object( 1 ); Otherwise, you should declare the object like this. return 0; }