C++ Header 在 Header / objects 初始化

C++ Header in Header / objects initalization

我遇到了这 2 个错误:

-错误:数字常量

之前的预期标识符

-错误:在数字常量

之前需要“,”或“...”

我尝试从第二个 class 到 object 到第一个 class 带有参数,它给了我这两个错误。没有参数工作正常。 这是主要的:

#include<iostream>

#include "c1.h"
#include "c1.cpp"

#include "c2.h"
#include "c2.cpp"

using namespace std;

int main()
{
    c2 obj2();
    return 0;
}

这是第一个 class header:

#ifndef C1_H
#define C1_H


class c1
{
    public:
        c1(int,int);
};

#endif // C1_H

及其cpp文件:

#include "c1.h"

c1::c1(int x,int y)
{
    std::cout << "\nCtor c1\n" << x << "\n" << y << "\n";
}

第二个文件header:

#include "c1.h"

#ifndef C2_H
#define C2_H

class c2
{
    public:
        c2();
        c1 obj1(10,2);
};

#endif // C2_H

及其 cpp:

#include "c2.h"

c2::c2()
{
    std::cout << "\nCtor c2\n";
}

谢谢。

不要在包含中使用 CPP 文件。

为了解决这个问题,您可以将对象更改为指针并使用类似 c1* obj1=new c1(10,2) 的东西,它应该可以工作。

一个更好的方法是,添加一个 class 成员 c1* obj1; 并使用 c2 的构造函数真正创建 c1 对象 obj1=new c1();