您好我是c ++的新手,我制作了程序的骨架,我在构造函数和构造函数方面遇到了一些问题。
我的头.cpp:
#include <iostream>
#include "set_char.hpp"
using namespace std;
int main()
{
set_char *z1 = new set_char(unsigned char *zbior[]);
delete z1;
return 0;
};
我的set_char.hpp
班级文件:
#define ROZMIAR_MAX 256
class set_char
{
unsigned char zbior[ROZMIAR_MAX];
public:
set_char(unsigned char *zbior[]);
~set_char(unsigned char *zbior[]);
int nalezy(unsigned char);
int licznosc();
void dodaj(unsigned char);
void usun(unsigned char);
};
我的set_char.cpp
文件:
#include "set_char.hpp"
#include <iostream>
#include <math.h>
using namespace std;
set_char(unsigned char *zbior[]);
~set_char(unsigned char *zbior[]);
void set_char::dodaj(unsigned char)
{
};
void set_char::usun(unsigned char)
{
};
int set_char::nalezy(unsigned char)
{
};
int set_char::licznosc()
{
};
答案 0 :(得分:1)
其中:
你不应该在析构函数中添加任何参数:
~set_char(unsigned char *zbior[]);
^^^^^^^^^^^^^^^^^^^^^^ --- remove it
创建set_char时,您应该提供指向数组的指针,而不是实际的参数类型:
set_char *z1 = new set_char(unsigned char *zbior[]);
^^^^^^^^^^^^^^^^^^^^^^
答案 1 :(得分:0)
您没有定义Constructor
和Destructor
您在set_char.hpp
set_char(unsigned char *zbior[]);
~set_char(unsigned char *zbior[]);
然而,在set_char.cpp
中,您再次声明它们而没有返回类型。在Constructor
之外定义Destructor
和class
是非法的。您的编译器认为它们是functions
并搜索返回类型。
Destructor
可能没有任何参数。
如果您在Function
或Constructor
或Destructor
中使用括号'[]'将数组定义为参数,则它可能不具有可变长度,因此它必须是定义。如果它的长度可变,则必须将其省略。
您使用以下方法以错误的方式调用构造函数:
new set_char(unsigned char *zbior[]);
你已经声明了它需要什么参数,所以把它交给参数。例如,null pointer
。
在set_char.hpp
中执行此操作的正确方法:
set_char(unsigned char *);
~set_char();
在set_char.cpp
中执行此操作的正确方法:
set_char::set_char(unsigned char *zbior)
{
//Your definition
}
set_char::~set_char();
{
//Your definition
}
在head.cpp
中执行此操作的正确方法:
set_char *z1 = new set_char(0x0);
另外注意,通常使用define
宏来定义常量,是C
方式。在C++
中,它通常用:
static const size_t ROZMIAR_MAX 256;
第二个侧面说明。如果您拥有常量/函数以及namespace