gpt4 book ai didi

c++ - 错误 LNK2019 并且不知道发生了什么

转载 作者:行者123 更新时间:2023-11-28 06:24:14 24 4
gpt4 key购买 nike

我有这门课:

    #ifndef String_H
#define String_H


class String
{
public:
String();
String(const char*, ...);
String(const String&);
~String();

const String& operator= (const char*);


const int capacity();
void clear(){ string[0] = '\0'; }

const char* getString()const { return string; }
const int lenght()const { return length; }

private:
int length;
char *string;
void alloc(const int);

};


#endif

在实现中我有这个:

#include <wtypes.h>
#include "String.h"
#include "Log.h"
#include <stdio.h>

String::String()
{
alloc(1);
clear();
}

String::String(const char* _string, ...)
{
//length = 0;
if (_string != NULL)
{
static char buff1[4096];
va_list args;

va_start(args, _string);
int res = vsprintf_s(buff1, 4096, _string, args);
va_end(args);

if (res > 0)
{
alloc(res + 1);
strcpy_s(string, length, buff1);
}
}
else
{
alloc(1);
clear();
}
}

String::String(const String& _string)
{
if (&_string != NULL)
{
alloc(_string.lenght());
strcpy_s(string, length, _string.getString());
}
else
{
alloc(1);
clear();
}
}

String::~String()
{
delete[]string;
}

const String& String::operator= (const char* str)
{
if (strlen(str) > sizeof(string) + 1)
{
delete[] str;
alloc(strlen(str) + 1);
strcpy_s(string, length, str);

}
else
{
strcpy_s(string, length, str);
}
return (*this);
}


void String::alloc(const int size)
{
length = size;
string = new char[size];
}

当我主要做的时候:

String a;
String b("hi");
a = b;

编译器告诉我:

错误2 error LNK2019: unresolved external symbol "public: class String const & __thiscall String::operator=(class String const &)"(??4String@@QAEABV0@ABV0@@Z) 在函数_main C中引用: ..\main.obj

错误 3 error LNK1120: 1 unresolved externals C:..\MyLibrary.exe

这让我发疯。请帮我。我看不出我做错了什么。

最佳答案

此行调用赋值运算符:

a = b;

您缺少接受 String 的赋值运算符。

这不是将被调用的赋值运算符:

const String& String::operator= (const char* str)

典型的赋值运算符具有以下签名:

String& String::operator= (const String& s)

请仔细阅读“Rule of 3”。 What is The Rule of Three?

关于c++ - 错误 LNK2019 并且不知道发生了什么,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28800676/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com