【问题标题】:Undefined reference to class from namespace in C++C++ 中命名空间对类的未定义引用
【发布时间】:2022-12-03 16:48:35
【问题描述】:

我是 C++ 的新手,正在尝试通过纸面交易做一个小型量化项目。

我有一个头文件alpaca/client.h如下:

#pragma once

#include <iostream>
#include <../utils/httplib.h> 
#include <config.h>

using namespace std;

namespace alpaca {
    
        class Client {

            private:

                alpaca::Config* config;

            public:

                Client();
                string connect();
        };
}

alpaca/client.cpp中的实现是

#include <iostream>
#include <string>
#include <client.h>
#include <httplib.h>

using namespace std;

namespace alpaca {

    Client::Client() {
        config = &alpaca::Config();
    };

    string Client::connect()  {
        httplib::Client client(config->get_url(MARKET));
        auto res = client.Get("/v2/account");
        if (res) {
            return res->body;
        }
        else {
            return "Error in Client::get_account(): " + to_string(res->status);
        }
    };
}

我的main.cpp 是:

#include <iostream>
#include <string>
#include <client.h>

using namespace std;

int main()
{
    alpaca::Client client = alpaca::Client();

    client.connect();

    return 0;
}

但是,当我尝试使用 g++ 进行编译时,我看到了以下错误:

C:/msys64/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/12.1.0/../../../../x86_64-w64-mingw32/bin/ld.exe: C:\Users\shubh\AppData\Local\Temp\cc765kwL.o:main.cpp:(.text+0x1ca): undefined reference to 'alpaca::Client::Client()'

任何人都可以帮助我到底缺少什么吗?我不太确定。

我使用的 g++ 命令是g++ -I./src/alpaca src/main.cpp

【问题讨论】:

  • 您还需要编译和链接Client.cpp
  • 您编译 main.cpp,它引用了在 client.cpp 中定义的 sy,bol。 client.cpp 未被编译或链接到 iutput 二进制文件

标签: c++


【解决方案1】:

您似乎忘记编译 client.cpp 文件。错误消息是说链接器找不到 Client 类构造函数的定义。

尝试使用 g++ 命令编译 main.cppclient.cpp,如下所示:

g++ -I./src/alpaca  src/main.cpp src/alpaca/client.cpp

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-05-17
    • 2013-03-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-10-19
    • 2021-06-30
    相关资源
    最近更新 更多