Closed. This question is not reproducible or was caused by typos。它当前不接受答案。












想改善这个问题吗?更新问题,以便将其作为on-topic用于堆栈溢出。

4年前关闭。



Improve this question




注意:我已经在SO上进行了彻底搜索,而针对其他人发布的具有类似问题的解决方案在这里对我不起作用。

我在C++中编写自己的自定义“类字符串”类,并且在编译时会遇到以下错误:



至于第一个和第二个错误,在cpp文件中将析构函数移至类定义本身并不起作用。

至于第三个错误,我似乎无法解决-我没有在重新定义类!

这是pystring.h:
#ifndef PYSTRING_INCLUDED
#define PYSTRING_INCLUDED

class PyString {
    char* string;
};

PyString::PyString (char*);
PyString::~PyString (void);

#endif

这是pystring.cpp:
#include "PyString.h"
#define NULL 0

class PyString {
    char* string = NULL;
  public:
    PyString(char inString) {
      string = new char[inString];
    };

    ~PyString(void) {
      delete string;
    };
};

供引用,以下是编译输出的屏幕截图:
c++ - C++错误: redefinition of class [closed]-LMLPHP

任何帮助是极大的赞赏。

最佳答案

您要在标题和cpp文件中定义类PyString,而且,函数定义最后不需要;
而且...您的函数原型(prototype)需要放在 header 的类声明中:

pystring.h

class PyString {
public: //ALWAYS indicate what is public/private/protected in your class
    PyString (char* inString);
    ~PyString (); // Don't put void when there's no parameter

private: // All attributes are private
    char* string;
};

pystring.cpp
#include "PyString.h"

PyString::PyString(char* inString) {
    string = inString; // Avoid using new unless you're forced to
}

PyString::~PyString() {
}

关于c++ - C++错误: redefinition of class [closed],我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/39972087/

10-10 23:34