下面的c ++代码有什么问题?

时间:2014-12-13 14:32:03

标签: c++

我在阅读c ++入门时遇到了一个问题,我想知道下面的代码有什么问题

#include<iostream>

using namespace std;

class Nodefault
{
        int a;
public:
        Nodefault(int j):a(j){};
};

class c
{
        int a ;
public:
        c(int b ):a(b){};
        c(){};
        Nodefault n(5) ;
};

int main()
{
        c obj;

        return 0;
}

为什么我无法使用Nodefault创建类c的对象  class作为其成员?

以下是编译器的错误:

  

错误:数字常量之前的预期标识符wrong2.cpp:18:14:   错误:预期&#39;,&#39;或者&#39; ...&#39;在数字常量之前

3 个答案:

答案 0 :(得分:4)

你在错误的地方定义了n。

实际上,您还需要在n的默认构造函数中构造c

#include <iostream>

using namespace std;

class Nodefault
{
    int a;
public:
    Nodefault(int j):a(j){};
};

class c
{
    int a ;
public:
    c(int b ) : a(b), n(5) {};
    c() : n(5) {};
    Nodefault n;
};

int main()
{
    c obj;

    return 0;
}

答案 1 :(得分:0)

因为在class C的默认构造函数中,编译器无法初始化Nodefault对象,因为该类没有可用的默认构造函数。

假设是

Nodefault n(5) ;
你的意思是

Nodefault n ;

答案 2 :(得分:0)

对于C ++ 03,语法为:

class c
{
    int a;
public:
    c(int b): a(b), n(5) {}
    c(): n(5) {}
    Nodefault n;
};