我需要给我的公开成员打电话。需要1个参数的构造方法。
这是我的代码的样子:
//主要
char tmpArray[100] = {};
while ( !inFile.eof() )
{
for ( unsigned x = 0; x < str2.length(); x++ )
{
if ( !isspace( str2[x] ) || isspace( str2[x] ) )
{
tmpArray[x] = str2[x]; // prepare to supply the constructor with each word
ClassObject[wrdCount] = new ClassType[x] ;
//ClassObject[wordCount]->ClassType( tmpArray );
}
}
}
错误是:
“功能样式转换”:非法如
'->'运算符的右侧
为了尝试解决该问题,我尝试了两个等效的表达式:
/* no good */ (*ClassObject[wrdCount]).ClassType( tmpArray );
/* no good */ (*ClassObject[wrdCount][10]).ClassType( tmpArray );
/* combine */ ClassObject[arbitrary][values]->ClassType( tmpArray );
Intellisense确实调出了除构造函数之外的所有我的成员和私有成员。
这可能是原因吗?
//MyHeader.h
class ClassObject
{
private:
const char* cPtr;
float theLength;
public:
ClassObject( const char* ); // Yes its here and saved..
ClassObject(); // an appropriate default constructor
~ClassObject( );
char GetThis( );
char* GetThat( );
}
最佳答案
我假设以下内容,因为从发布的代码中尚不清楚:
(1)。 ClassObject的定义如下:ClassType * ClassObject [/ some value / 10];
(2)。 MyHeader.h中的类定义是ClassType而不是ClassObject。
在这种情况下,以下语句是问题所在:
ClassObject[wrdCount] = new ClassType[x]
在这里,它创建了“ x”个ClassType对象。我认为那不是您想要的。我想您想通过传递const char *作为构造函数参数来构造ClassType对象。如果是这样,则应该这样使用它:
ClassObject[wrdCount] = new ClassType(tmpAray);
另请注意,您假设传递的数组大小。我建议最好使用类似std :: string之类的东西,而不要使用原始字符数组。