【发布时间】:2015-10-01 03:29:40
【问题描述】:
尝试编译以下代码时:
int main(){
Array<int> *testArray = new Array<int>(5);
testArray->initArray<int>(testArray);
testArray->printArray<int>(testArray);
return 0;
}
使用此模板:
template<typename T>
class Array{
public:
Array(int size){
size = size;
data = new T[size];
};
Array<T> addData(T dataToAdd){
Array <T> *tmp = new Array <T> (this->size);
tmp = this->data;
Array <T> *newData = new Array<T> (this->size + 1);
for (int i = 0; i < this->size + 1; ++i){
if (i < this->size){
newData->data[i] = tmp[i];
}
else{
newData->data[i] = dataToAdd;
}
}
return newData;
};
void initArray(T arrayToInit){
for (int i = 0; i < this->size; ++i){
this->data[i] = i;
}
};
void printArray(T arrayToPrint){
ostringstream oss;
string answer = "";
for (int i = 0; i < arrayToPrint->size; ++i){
oss << arrayToPrint[i] + " ";
}
answer = oss.str();
cout << answer << endl;
};
private:
int size;
T* data;
};
我的 int main() 中出现以下错误:
“‘int’之前的预期主表达式”
对于我的两个函数调用(initArray 和 printArray)。我对 C++ 相当陌生,特别是对模板几乎没有经验,任何建议都将不胜感激。感谢您的宝贵时间。
编辑:感谢大家的回复和建设性的批评,感谢大家的帮助,我取得了很大的进步。
【问题讨论】:
-
initArray<int>()应该是initArray()但这只是问题的开始。 -
initArray和printArray的参数没有用。它们应该被删除。 -
感谢您迄今为止的反馈,您看到的任何其他问题都可以指出将非常有帮助,谢谢!
标签: c++ templates compiler-errors