我在阅读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;在数字常量之前
答案 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;
};