【问题标题】:C++ Header in Header / objects initalizationHeader / objects 初始化中的 C++ Header
【发布时间】:2015-11-16 20:41:58
【问题描述】:

我遇到了这 2 个错误:

-错误:数字常量之前的预期标识符

-错误:数字常量前应有 ',' 或 '...'

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

#include<iostream>

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

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

using namespace std;

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

这是头等舱:

#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";
}

还有第二个文件头:

#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";
}

谢谢。

【问题讨论】:

  • 你几乎不应该拥有#include "xxxx.cpp"
  • 你想在这条线上做什么:c1 obj1(10,2);?
  • 那么#include 呢?使用第一类 c1 的参数创建一个对象。

标签: c++ parameters header include


【解决方案1】:

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

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

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

【讨论】:

  • 是的,指针工作得非常好。但我不明白“更好的方法”。你那是什么意思?顺便说一句,使用局部变量,不起作用?只有指针?
猜你喜欢
  • 2016-08-13
  • 2011-11-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-02-21
  • 2014-09-11
  • 2014-02-21
  • 2017-06-29
相关资源
最近更新 更多