我是编程的初学者。 我编写了两个类(具有需要传递参数的构造函数)并且想要在另一个类中声明和使用一个类的对象。
我试图在许多网站上找到我的错误的解决方案,但它们都没有奏效。我还看到了使用' 新'解决此问题的方法。句法。 请提出一些(任何)方法来解决这个问题。
类似于我遇到问题的短程序如下: (我知道这个程序很愚蠢但是,这不是我面临问题的实际程序。相反,这是我正面临错误的程序部分的缩小版本)
的main.cpp
#include <iostream>
#include "Class2.h"
using namespace std;
int main()
{
Class2 Class2_Obj;
Class2_Obj.Class2_Function(); // error: undefined reference to `Class2::Class2_Function
return 0;
}
Class1.h
#ifndef CLASS1_H_INCLUDED
#define CLASS1_H_INCLUDED
class Class1
{
private:
const int c1_Variable;
public:
Class1(int);
// Displays the value of c1_Variable on output screan
void Class1_Function();
};
#endif // CLASS1_H_INCLUDED
Class1.cpp
#include <iostream>
#include "Class1.h"
Class1::Class1(int receivedInt) : c1_Variable(receivedInt) {}
void Class1::Class1_Function()
{
cout << c1_Variable;
}
Class2.h
#ifndef CLASS2_H_INCLUDED
#define CLASS2_H_INCLUDED
#include"Class1.h"
class Class2
{
private:
Class1 Class1_Obj(4); // 4 is just a random number.
//error: expected identifier before numeric constant
//error: expected ',' or '...' before numeric constant
public:
// Calls Class1_Function()
void Class2_Function();
};
#endif // CLASS2_H_INCLUDED
Class2.cpp
#include <iostream>
#include "Class1.h"
#include "Class2.h"
void Class::Class2_Function()
{
Class1_Obj.Class1_Function();
}
Class2.h中的错误的屏幕截图 - http://i.stack.imgur.com/WpK9k.jpg
main.cpp中的错误屏幕截图 - http://i.stack.imgur.com/yDBD7.jpg
请帮帮我!提前感谢任何回复:)
答案 0 :(得分:1)
问题是这种非静态数据成员语法的就地初始化无效:
class Class2
{
private:
Class1 Class1_Obj(4);
....
};
您可以改用{}
,
class Class2
{
private:
Class1 Class1_Obj{4};
....
};
或此表格
class Class2
{
private:
Class1 Class1_Obj = Class1(4);
....
};
答案 1 :(得分:0)
C ++是一种面向对象的语言。它有用于构建数据的类。
要将一个班级放入另一个班级,您可以an object of one class
a member of another class
。
从语法上讲,它就像
一样class A {
int x;
public:
A (int x1) : x(x1) {}
};
class B {
A a; // this is how you do it ..
public:
B() : A(4) {}
};
B b; // b is an object which has a member b.a
如您所见,b
是类B
的对象。它有a
个成员A
。