gpt4 book ai didi

c++ - 通过引用错误的 C++ 传递字符串

转载 作者:行者123 更新时间:2023-11-30 01:50:10 25 4
gpt4 key购买 nike

我正在编写一个简单的类并遇到一些错误。头文件如下所示:

//
// temp.h
//

#ifndef _TEMP_h
#define _TEMP_h

#include <string>
using namespace std;

class GameEntry {
public:
GameEntry(const string &n="", int s=0);
string getName();
int getScore();
private:
string name;
int score;
};

#endif

方法文件如下:

// temp.cpp

#include "temp.h"
#include <string>
using namespace std;

GameEntry::GameEntry(const string &n, int s):name(n),score(s) {}

string GameEntry::getName() { return name; }

int GameEntry::getScore() { return score; }

主文件如下图所示:

#include <iostream>
#include <string>
#include "temp.h"
using namespace std;

int main() {
string str1 = "Kenny";
int k = 10;
GameEntry G1(str1,k);

return 0;
}

我遇到这样的错误:

Undefined symbols for architecture x86_64:
"GameEntry::GameEntry(std::__1::basic_string<char, std::__1::char_traits<char>,
std::__1::allocator<char> > const&, int)", referenced from:
_main in main1-272965.o
ld: symbol(s) not found for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to see invocation)

谁能告诉我这是怎么回事?非常感谢。

最佳答案

不能在定义中放入默认参数:

GameEntry::GameEntry(const string &n, int s):name(n),score(s) {}

编辑:其实你可以把它放在定义中,但你不能把它同时放在定义和声明中。可以在这个问题中找到更多信息:Where to put default parameter value in C++?

关于c++ - 通过引用错误的 C++ 传递字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27870217/

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