簡體   English   中英

C++ 中命名空間對 class 的未定義引用

[英]Undefined reference to class from namespace in C++

我是 C++ 的新手,正在嘗試通過紙面交易做一個小型量化項目。

我有一個 header 文件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文件了。 錯誤消息是說 linker 找不到Client class 構造函數的定義。

嘗試使用g++命令編譯main.cppclient.cpp ,如下所示:

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM