bool"bar"默认为true,但它应该为false,它不能在构造函数中初始化.有没有办法将它初始化为假而不使其静态?
简化版代码:
foo.h中
class Foo{
public:
void Foo();
private:
bool bar;
}
Run Code Online (Sandbox Code Playgroud)
foo.c的
Foo::Foo()
{
if(bar)
{
doSomethink();
}
}
Run Code Online (Sandbox Code Playgroud) 这不起作用:
unsigned char foo;
foo = 0x123;
sprintf("the unsigned value is:%c",foo);
Run Code Online (Sandbox Code Playgroud)
我收到此错误:
无法将参数2从'unsigned char'转换为'char'
错误C2664:'strcpy':无法将参数1从'TCHAR*'转换为'char*'代码:
LPCTSTR name, DWORD value
strcpy (&this->valueName[0], name);
Run Code Online (Sandbox Code Playgroud)
错误C2664:'strlen':无法将参数1从'LPCTSTR'转换为'const char*'
LPCTSTR name;
strlen (name)
Run Code Online (Sandbox Code Playgroud)
以上代码在另一个项目中工作正常的类,我找不到它在MS VS2010项目中不起作用的原因.
有一个包含这些语句的文件:
public:
boost::shared_ptr<TBFControl::TbfCmdHandler> _tbfCmdHandlerPtr;
// will be private later...
boost::shared_ptr<TBFControl::TbfCmdHandler> getTBFCmdHandler()
{ return _tbfCmdHandlerPtr; }
Run Code Online (Sandbox Code Playgroud)
我可以这样使用它:
boost::shared_ptr<TBFControl::TbfCmdHandler>myTbfCmdHandlerPtr(
this->getTBFInstallation()-> _tbfCmdHandlerPtr );
Run Code Online (Sandbox Code Playgroud)
但不是,就像我想要的那样:
boost::shared_ptr<TBFControl::TbfCmdHandler>myTbfCmdHandlerPtr(
this->getTBFInstallation()->getTBFCmdHandler() );
Run Code Online (Sandbox Code Playgroud)
使用getter函数,会发生以下错误:
'Housekeeping :: TBFInstallation :: getTBFCmdHandler':无法将'this Housekeeping :: TBFInstallation'中的'this'指针转换为'Housekeeping :: TBFInstallation'
这里出了什么问题?