Panowie jesli mozna pojsc za ciosem to mam pytanie w zwiazku z "vector".
Otoz w jednym z naglowkow aplikacji "zapodalem" sobie taka definicje typu:
//ArrayHelper.h
//...
typedef std::vector<std::vector<string>> ArrString2D;
namespace CoreHelper
{
class ArrayHelper
{
//...
}
}
Zakladajac, iz w ten sposob bedzie ona dostepna globalnie - i tutaj pierwsze pytanie - czy praktyczniej nie bedzie umiescic definicji od razu w czasie "odpalenia" aplikacji ?
Ok, ale przejdzmy do meritum.
W innym miejscu chce wykorzystac zdefiniowany przez siebie typ w przypadku lokalnej tablicy, ale w ponizszym przypadku
//DataReader.cpp
ArrString2D DataReader::readFromFile(string file)
{
ArrString2D arrString2D(*rowsNumberPtr, vector<string>(*colsNumberPtr));
}
Na gwiazdce "*rowsNumberPtr" wywala mi blad "no istance of constructor...". Sprobowalem zatem czegos takiego:
//DataReader.cpp
ArrString2D DataReader::readFromFile(string file)
{
ArrString2D arrString2D(*rowsNumberPtr);
//...
while (!reader.eof()) {
//...
vector<string> col(*colsNumberPtr);
//...
while ((pos = line.find(delimiter)) != string::npos) {
//...
col.at(j) = line.substr(0, pos);
//...
}
//...
arrString2D.at(i).resize(*colsNumberPtr);
arrString2D.at(i) = col;
//...
}
//...
}
Ale w momencie przypisania: "arrString2D.at(i) = col;" pojawia sie kolejny blad : "no operator "=" matches these operands".
Jesli jednak zrobie cos takiego:
//DataReader.cpp
ArrString2D DataReader::readFromFile(string file)
{
vector<vector<string>> arrString2D(*rowsNumberPtr, vector<string> (*rowsNumberPtr));
}
Przypisanie dziala bez zarzutu, ale typ "vector<vector<string>>" deklarowany w ciele metody nie jest tozsamy z "typedef std::vector<std::vector<string>> ArrString2D;" :/
W jaki zatem sposob powinienem postapic ?
Z gory dziekuje za sugestie.