首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Ctor不允许返回类型

问Ctor不允许返回类型
EN

Stack Overflow用户
提问于 2010-04-06 00:57:36
回答 2查看 29.4K关注 0票数 44

有代码:

代码语言:javascript
复制
struct B
{
    int* a;
    B(int value):a(new int(value))
    {   }
    B():a(nullptr){}
    B(const B&);
}

B::B(const B& pattern)
{

}

我收到错误消息:

‘错误1错误C2533:'B::{ctor}’:构造函数不允许返回类型‘

知道为什么吗?

附注:我使用的是VS 2010RC

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2010-04-06 00:58:30

您的struct定义后缺少分号。

错误是正确的,构造函数没有返回类型。由于缺少分号,整个结构定义被视为函数的返回类型,如下所示:

代码语言:javascript
复制
// vvv return type vvv
struct { /* stuff */ } foo(void)
{
}

添加分号:

代码语言:javascript
复制
struct B
{
    int* a;
    B(int value):a(new int(value))
    {   }
    B():a(nullptr){}
    B(const B&);
}; // end class definition

// ah, no return type
B::B(const B& pattern)
{

}
票数 79
EN

Stack Overflow用户

发布于 2010-04-06 00:59:25

你需要一个更好的编译器。使用g++:

代码语言:javascript
复制
a.cpp:1: error: new types may not be defined in a return type
a.cpp:1: note: (perhaps a semicolon is missing after the definition of 'B')
a.cpp:5: error: return type specification for constructor invalid

分号是必需的,因为它终止了可能的结构实例列表:

代码语言:javascript
复制
struct B {
...
} x, y, z;

创建三个名为x,y和z的B实例。这是C++C继承的一部分,并将仍然存在于C++0x中。

票数 12
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2579657

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档