我正在尝试将指针存储在数组中。
我指向指针的指针是类对象:
classType **ClassObject;
所以我知道我可以使用像这样的新运算符来分配它:
ClassObject = new *classType[ 100 ] = {};
我正在阅读带有标点符号的文本文件,这是我到目前为止的内容:
// included libraries
// main function
// defined varaibles
classType **ClassObject; // global object
const int NELEMENTS = 100; // global index
wrdCount = 1; // start this at 1 for the 1st word
while ( !inFile.eof() )
{
getline( inFile, str, '\n' ); // read all data into a string varaible
str = removePunct(str); // User Defined Function to remove all punctuation.
for ( unsigned x = 0; x < str.length(); x++ )
{
if ( str[x] == ' ' )
{
wrdCount++; // Incrementing at each space
ClassObject[x] = new *classType[x];
// What i want to do here is allocate space for each word read from the file.
}
}
}
// this function just replaces all punctionation with a space
string removePunct(string &str)
{
for ( unsigned x = 0; x < str.length(); x++ )
if ( ispunct( str[x] ) )
str[x] = ' ';
return str;
}
// Thats about it.
我想我的问题是:
答案 0 :(得分:3)
如果您使用的是C ++,请使用Boost Multidimensional Array Library
答案 1 :(得分:1)
嗯,我不确定你想做什么(尤其是新的* classType [x] - 这甚至可以编译吗?)
如果你想为每个单词添加一个新的classType,那么你可以去
ClassObject[x] = new classType; //create a _single_ classType
ClassObject[x]->doSomething();
如果ClassObject已初始化(正如您所说)。
你说你想要一个2D数组 - 如果你想这样做,那么语法是:
ClassObject[x] = new classType[y]; //create an array of classType of size y
ClassObject[0][0].doSomething(); //note that [] dereferences automatically
但是,我也不确定你的新* classType [100] = {}是什么意思; - 那里的花括号是什么?好像应该是
classType** classObject = new classType*[100];
我强烈建议你使用别的东西,因为这真的很讨厌(你必须要处理删除...呃)
使用vector&lt;&gt;或者如上面提到的海报,升级库。
答案 2 :(得分:0)
除了一行外,您的代码完全没问题:
ClassObject[x] = new *classType[x];
明星*需要消失,你可能想说的是你希望ClassObject被索引到字数而不是x。
将该行替换为:
ClassObject[wrdCount] = new classType[x];
希望有所帮助, Billy3