在我的程序中"无符号"之前的预期主表达式(析构函数和构造函数问题)
expected primary-expression before 'unsigned' in my program (destructors and constructors problems)
嗨,我是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()
{
};
其中:
您不应该在析构函数中添加任何参数:
~set_char(unsigned char *zbior[]);
^^^^^^^^^^^^^^^^^^^^^^ --- remove it
创建set_char时,应该提供指向数组的指针,而不是实际的参数类型:
set_char *z1 = new set_char(unsigned char *zbior[]);
^^^^^^^^^^^^^^^^^^^^^^
1
您没有定义您的Constructor
和Destructor
您在set_char.hpp
中声明了这两个
set_char(unsigned char *zbior[]);
~set_char(unsigned char *zbior[]);
但是,在set_char.cpp
中,您可以在没有返回类型的情况下再次声明它们。在class
之外定义Constructor
和Destructor
是非法的。编译器认为它们是functions
,并搜索返回类型。
2
CCD_ 11可以不具有任何自变量。
3
如果将数组定义为带括号"[]"的Function
、Constructor
或Destructor
中的参数,则该数组的长度可能不可变,因此必须对其进行定义。如果它的长度是可变的,则必须将其排除在外。
4
您使用调用构造函数的方式不正确
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
中定义了常量/函数等,则认为它是"更整洁"的代码
相关文章:
- 什么时候调用组成单元对象的析构函数
- 如果C++类在类方法中具有动态分配,但没有构造函数/析构函数或任何非静态成员,那么它仍然是POD类型吗
- 内联映射初始化的动态atexit析构函数崩溃
- 什么时候调用析构函数
- 优先顺序:智能指针和类析构函数
- C++-明确何时以及如何调用析构函数
- 使用基类指针创建对象时,缺少派生类析构函数
- 在c++中使用向量时,如何调用构造函数和析构函数
- 重载运算符new[]的行为取决于析构函数
- 我需要知道编译器如何在cpp中使用析构函数
- 为什么在使用转换构造函数赋值后调用C++类的析构函数?
- 析构函数调用
- 通过引用传递-为什么要调用这个析构函数
- 对具有动态分配的内存和析构函数的类对象的引用
- 重载 -> shared_ptr 个实例中的箭头运算符<interface>,接口中没有纯虚拟析构函数
- C++成员的析构函数顺序与shared_ptr
- C++ 防止在映射中放置()时调用析构函数
- 以逗号分隔的表达式中的析构函数调用
- 释放用户定义表达式析构函数中的动态内存
- 在我的程序中"无符号"之前的预期主表达式(析构函数和构造函数问题)