"Undefined symbols for architecture arm64" - 这是什么意思?

"Undefined symbols for architecture arm64" - What does this mean?

我无法将我的代码获取到 运行,互联网似乎不知道为什么。我不确定我需要让您知道什么,但如果有帮助,我正在使用 CLion。

这是我的 plant.h 文件:

#ifndef COURSEWORK_PLANT_H
#define COURSEWORK_PLANT_H

using namespace std;

class Plant {
public:
    void addGrowth();
    int getSize();
    string getName();
    Plant(string x, int y);
private:
    string plantName;
    int plantSize;
};

#endif //COURSEWORK_PLANT_H

这是我的 plant.cpp 文件:

#include <iostream>
#include "plant.h"

using namespace std;

void Plant::addGrowth(int x) {
    plantSize += x;
    cout << "You have added " << x << " leaves to your plant. Well done!";
}

int Plant::getSize() {
    return Plant::plantSize;
}

string Plant::getName() {
    return Plant::plantName;
}

这是我的 main.cpp 文件:

#include <iostream>
#include "plant.h"

using namespace std;

int main() {
    Plant myPlant("Bugg", 2);

    return 0;
}

这是我的 CMakeLists.txt 文件:

cmake_minimum_required(VERSION 3.21)
project(Coursework)

set(CMAKE_CXX_STANDARD 14)

add_executable(Coursework main.cpp plant.h plant.cpp)

提前感谢您的帮助!

未定义符号表示符号已声明但未定义。

例如,在 class 定义中,您有以下不带参数的成员函数

void addGrowth();

但是你定义了一个同名的函数,但现在只有一个参数

void Plant::addGrowth(int x) {
    plantSize += x;
    cout << "You have added " << x << " leaves to your plant. Well done!";
}

因此class定义Plant中声明的函数仍然未定义。

也没有定义构造函数

 Plant(string x, int y);

在您提供的代码中。

如果您在 header plant.h 中使用标准库中的名称 string,那么您需要包含 header <string>

#include <string>