我試圖從基類調用一個派生類的非成員函數,但得到這個錯誤訪問派生類的非成員函數:從基類
error: no matching function for call to 'generate_vectorlist(const char&)'
下面是相關的代碼片段從基類:
//Element.cpp
#include "Vector.h"
...
string outfile;
cin >> outfile;
const char* outfile_name = outfile.c_str();
generate_vectorlist(*outfile_name); //ERROR
...
和派生類(這是一個模板類,所以一切的在報頭):
//Vector.h
template <class T>
void generate_vectorlist(const char* outfile_name = "input.txt")
{
std::ofstream vectorlist(outfile_name);
if (vectorlist.is_open())
for (Element::vciter iter = Element::vectors.begin(); iter!=Element::vectors.end(); iter++)
{
Vector<T>* a = new Vector<T>(*iter);
vectorlist << a->getx() << '\t' << a->gety() << '\t'<< a->getz() << std::endl;
delete a;
}
else { std::cout << outfile_name << " cannot be opened." << std::endl;}
vectorlist.close();
}
我的猜測是我錯過了一小段語法。有任何想法嗎?
「派生類的非成員函數」是什麼?類不能有非成員函數;非成員函數的定義是它不是成員。你的意思是一個靜態成員函數嗎? – 2010-06-22 01:59:53
派生類的非成員函數對於「在特定類頭/源文件中定義的非成員函數」是一個壞詞。如果這意味着一個靜態成員函數,那麼是的,是的,我的意思是! – 2010-06-22 02:12:09