簡體   English   中英

C++ 候選 function 不可行

[英]C++ candidate function not viable

我嘗試打印出一個空向量,但收到以下錯誤:

/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/v1/ostream:220:20: note: candidate function not viable: no known conversion from 'vector<int>' to 'basic_streambuf<std::basic_ostream<char>::char_type> *' (aka 'basic_streambuf<char> *') for 1st argument
    basic_ostream& operator<<(basic_streambuf<char_type, traits_type>* __sb);
                   ^

/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/v1/ostream:223:20: note: candidate function not viable: no known conversion from 'vector<int>' to 'std::nullptr_t' for 1st argument
    basic_ostream& operator<<(nullptr_t)

我也嘗試過std::cout << vec << std::endl; 但它仍然不起作用。

這是我的代碼:

#include <iostream>
#include <string>
#include <fstream>
#include <vector>

using namespace std;

int main() {
    vector <int> vec(5);
    cout << vec << endl;
    return 0;
}

不要掛斷無法轉換為std::nullptr_t的問題。 該錯誤基本上意味着您的向量類型的 output stream 運算符沒有過載。 因此,您必須為向量實現自己的 output function ,如下所示:

#include <iostream>
#include <string>
#include <vector>

template<typename type_t>
std::ostream& operator<<(std::ostream& os, const std::vector<type_t>& vector)
{
    bool comma = false;
    for (const auto& item : vector)
    {
        if (comma) std::cout << ", ";
        std::cout << item;
        comma = true;
    }
    std::cout << "\n";

    return os;
}

int main() 
{
    std::vector<int> vec{ 1,2,3,4,5 };
    std::cout << vec;
    return 0;
}

暫無
暫無

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

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