看板 C_and_CPP 關於我們 聯絡資訊
開發平台(Platform): (Ex: VC++, GCC, Linux, ...) NetBeans 額外使用到的函數庫(Library Used): (Ex: OpenGL, ...) vector 問題(Question): 無法compile 錯誤結果(Wrong Output): main.cpp:22: error: no matching function for call to `std::vector<int, std::allocator<int> >::pop_back(int)' /usr/lib/gcc/i686-pc-cygwin/3.4.4/include/c++/bits/stl_vector.h:578: note: candidates are: void std::vector<_Tp, _Alloc>::pop_back() [with _Tp = int, _Alloc = std::allocator<int>] 程式碼(Code):(請善用置底文網頁, 記得排版) # include <stdlib.h> # include <stdio.h> # include <iostream> # include <vector> using namespace std; class Test { public: vector<int> num; Test():num(5) { } }; int main() { Test test; test.num.pop_back( 5 ); system( "pause" ); } // main() 補充說明(Supplement): 想在class裡面用 vector 可是不知道怎樣在 main 裡面做存取 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 123.204.79.140
yueayase:pop_back()不是這樣用,它不需要參數 04/19 22:33
yueayase:如果需要刪除vector裡的元素要用erase和iterator 04/19 22:35
wind75609592:那如果不在 class 裡面設初始大小也可以嗎 04/19 22:37
wind75609592: test.num.resize(10); 04/19 22:40
wind75609592:test.num(2) = 5; // 這樣也不行@@ 04/19 22:41
jhchou:test.num[2] = 5 04/19 22:49
wind75609592:感謝@@ 耍笨了 04/19 22:59
wind75609592:如果把 vector 宣告成 static 的話, 要如何使用? 04/19 23:16
wind75609592:例如我把 vector 前面加上 static 04/19 23:29
wind75609592:然後再 main 裡面印出 Test::num.capacity() 04/19 23:29
wind75609592:[Linker error] undefined reference to `Test::num' 04/19 23:30
wind75609592:我知道在 class 裡面的變數加 static 是整個class共 04/19 23:31
wind75609592:用一份 可是不知道怎存取 vector 這種的... 04/19 23:31
leiyan:不要用建構初始 04/20 00:14
wind75609592:那要怎避免以上的Linker error 04/20 08:42
shadow0326:static member 要在class外定義 04/20 10:19
wind75609592:可以舉例嗎?? 04/20 17:22
shadow0326:http://0rz.tw/Q0ZqW 04/20 22:41