首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >main外部的C++对象初始化

main外部的C++对象初始化
EN

Stack Overflow用户
提问于 2013-07-25 02:38:38
回答 4查看 4.7K关注 0票数 0

我有一些产生错误的C++代码:

代码语言:javascript
复制
class foo{
  public:
    int a; 
    int b;
};

foo test;
test.a=1;   //error here
test.b=2;

int main()
{
    //some code operating on object test
}

我得到了这个错误:

代码语言:javascript
复制
error: expected constructor, destructor, or type conversion before '.' token

这个错误意味着什么?我该如何修复它?

EN

回答 4

Stack Overflow用户

发布于 2013-07-25 02:41:00

它被称为构造函数。包括一个以所需值作为参数的函数。

喜欢

代码语言:javascript
复制
class foo
{
public:
    foo(int aa, int bb)
        : a(aa), b(bb)  // Initializer list, set the member variables
        {}

private:
    int a, b;
};

foo test(1, 2);

正如chris所指出的,如果字段为public,您也可以使用聚合初始化,如您的示例所示:

代码语言:javascript
复制
foo test = { 1, 2 };

这也适用于使用构造函数的C++11兼容编译器,如我的示例所示。

票数 3
EN

Stack Overflow用户

发布于 2013-07-25 02:42:58

这应该是:

代码语言:javascript
复制
class foo
{
  public:
    int a; 
    int b;
};

foo test;
int main()
{
  test.a=1;
  test.b=2;
}

不能在方法/函数之外编写代码,只能声明变量/类/类型等。

票数 1
EN

Stack Overflow用户

发布于 2013-07-25 02:44:18

你需要一个默认的构造函数:

代码语言:javascript
复制
//add this
foo(): a(0), b(0) { };
//maybe a deconstructor, depending on your compiler
~foo() { };
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17842215

复制
相关文章

相似问题

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