首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

晕,大意了,没搞定就结帖了,大家快回来,该怎么解决

2012-04-12 
晕,大意了,没搞定就结帖了,大家快回来定义了一个类,classCTest{……public:CTest(constchar*fileName)//构

晕,大意了,没搞定就结帖了,大家快回来
定义了一个类,
class   CTest
{
        ……
public:
CTest(const   char*   fileName);   //构造函数
        ……
};

CTest::CTest(const   char*   fileName)
{
        ……
CFile   f;
f.Open(fileName,CFile::modeReadWrite);
f.Close();
        ……
}

然后,在其他程序中,
CTest   m_OriTest( "Ori.f ");

此行编译错误:error   C2059:   syntax   error   :   'string '

不知道为什么。

[解决办法]
双击错误,看看指到那里了,你给的代码是没有问题的
[解决办法]
f.Open(fileName,CFile::modeReadWrite);
fileName改成类型string看行不
你看看msdn的CFile类吧
[解决办法]
看来是与string有关的,找函数说明,找用到string的地方,用debug看也行,要不就输出一些信息,查找什么地方出错。
[解决办法]
楼主一定是定义其他类的成员变量的时候直接调用构造函数了
类似于
class T
{
private:
CTest m_aa( "fff ");//error
publc:
T();
};

==============> >

class T
{
public:
T();
private:
CTest m_aa;//( "fff ");
};
T::T():m_aa( "aa ")
{

}


[解决办法]
believefym(feng) 正解。

to csdn5211(不同) :believefym(feng)的是一种方法。
另外你可以把成员变量定义成指针。
class T
{
private:
CTest *m_pOriTest
publc:
T();
{
m_pOriTest =new CTest( "abc.txt ");
}
~T()
{
delete m_pOriTest

}
};


[解决办法]
成员变量(那种类类型的成员变量例如CScreen, 普通例如整形变量没有关系),直接调用CScreen构造函数,并且将参数传给CScreen构造函数。

而在赋值中, 先会隐式调用默认CScreen构造函数, 将CScreen类类型的成员变量初始化为空, 然后在大类的构造函数中进行赋值, 也即进行拷贝构造函数。

所以在赋值中性能相对比较差。

[解决办法]
class T
{
private:
//CTest m_aa( "fff ");//error
CTest m_aa;

publc:
T():m_aa( "fff ")
{ ... }
};


[解决办法]
不错

热点排行