Home "A type cannot be introduced in a function parameter list"
Reply: 0

"A type cannot be introduced in a function parameter list"

user46741
1#
user46741 Published in September 19, 2018, 9:08 am

I'm using the Bullet physics library in a C++ program on Visual Studio. When I turn off the Visual Studio language extensions I cannot get the Bullet physics library to compile, I get the error:

'btSerializer': a type cannot be introduced in a function parameter list

And brings me to the line:

virtual const char* serialize(void* dataBuffer, class btSerializer* serializer) const;

The documentation for these functions are here:

Documentation

Edit: Verifiable example, what is happening here?

class Bar
{public:
    void serialize(void* dataBuffer, class btSerializer* serializer) ;
};

int main()
{

}

If Visual Studio language extensions are on, it compiles fine. If I turn it off it emits the same error as I mentioned above. Also, if I eliminate the first argument of the void pointer, so that the function has only the btSerializer* argument it compiles fine. So for example:

class Bar
{public:
    void serialize(void* dataBuffer, class btSerializer* serializer) ;
};

Emits the error:

'btSerializer': a type cannot be introduced in a function parameter list

But:

class Bar
{public:
    void serialize(class btSerializer* serializer) ;
};

Compiles fine.

Also, a forward declaration of class btSerializer; makes the error go away.

share|improve this question
  • 1
    Have you tried deleting the class keyword as in virtual void serializeSingleObject(btSerializer* serializer) const; – Dr Yunke Feb 14 at 6:31
  • Minimal, Complete, and Verifiable example please. I can't reproduce it. So I have no way to know if it's a compiler bug or my attempt is wrong. – StoryTeller Feb 14 at 6:31
  • @Dr Yunke, I tried, same thing. I'm trying to make verifiable example but each header depends on many other headers and I'm having trouble. – Zebrafish Feb 14 at 6:45
  • You need class btSerializer declared (possibly forward-declared) before you can mention it in a function parameter. – n.m. Feb 14 at 6:48
  • 1
    @Zebrafish it does look like a compiler bug. – n.m. Feb 14 at 9:00

active oldest votes

Your Answer

StackExchange.ifUsing("editor", function () { StackExchange.using("externalEditor", function () { StackExchange.using("snippets", function () { StackExchange.snippets.init(); }); }); }, "code-snippets"); StackExchange.ready(function() { var channelOptions = { tags: "".split(" "), id: "1" }; initTagRenderer("".split(" "), "".split(" "), channelOptions); StackExchange.using("externalEditor", function() { // Have to fire editor after snippets, if snippets enabled if (StackExchange.settings.snippets.snippetsEnabled) { StackExchange.using("snippets", function() { createEditor(); }); } else { createEditor(); } }); function createEditor() { StackExchange.prepareEditor({ heartbeatType: 'answer', convertImagesToLinks: true, noModals: false, showLowRepImageUploadWarning: true, reputationToPostImages: 10, bindNavPrevention: true, postfix: "", onDemand: true, discardSelector: ".discard-answer" ,immediatelyShowMarkdownHelp:true }); } });
 
StackExchange.ready( function () { StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f48780942%2fa-type-cannot-be-introduced-in-a-function-parameter-list%23new-answer', 'question_page'); } );

By clicking "Post Your Answer", you acknowledge that you have read our updated terms of service, privacy policy and cookie policy, and that your continued use of the website is subject to these policies.

Browse other questions tagged c++ class parameters bulletphysics or ask your own question.

StackExchange.ready(function(){$.get('/posts/48780942/ivc/c4f0');});
StackExchange.ready(function () { StackExchange.responsiveness.addSwitcher(); }) (function(i, s, o, g, r, a, m) { i['GoogleAnalyticsObject'] = r; i[r] = i[r] || function() { (i[r].q = i[r].q || []).push(arguments) }, i[r].l = 1 * new Date(); a = s.createElement(o), m = s.getElementsByTagName(o)[0]; a.async = 1; a.src = g; m.parentNode.insertBefore(a, m); })(window, document, 'script', 'https://www.google-analytics.com/analytics.js', 'ga'); StackExchange.ready(function () { StackExchange.ga.init({ sendTitles: true, tracker: window.ga, trackingCodes: [ 'UA-108242619-1' ] }); StackExchange.ga.setDimension('dimension2', '|c++|class|parameters|bulletphysics|'); StackExchange.ga.setDimension('dimension3', 'Questions/Show'); StackExchange.ga.trackPageView(); }); /**/ var _qevents = _qevents || [], _comscore = _comscore || []; (function() { var ssl = 'https:' == document.location.protocol, s = document.getElementsByTagName('script')[0], qc = document.createElement('script'); qc.async = true; qc.src = (ssl ? 'https://secure' : 'http://edge') + '.quantserve.com/quant.js'; s.parentNode.insertBefore(qc, s); _qevents.push({ qacct: "p-c1rF4kxgLUzNc" }); /**/ var sc = document.createElement('script'); sc.async = true; sc.src = (ssl ? 'https://sb' : 'http://b') + '.scorecardresearch.com/beacon.js'; s.parentNode.insertBefore(sc, s); _comscore.push({ c1: "2", c2: "17440561" }); })();
You need to login account before you can post.

About| Privacy statement| Terms of Service| Advertising| Contact us| Help| Sitemap|
Processed in 0.37377 second(s) , Gzip On .

© 2016 Powered by mzan.com design MATCHINFO