Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/152.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在构造函数参数列表中构造boost::function对象时出现错误C2228 下面的代码在Visual C++ 2005中没有编译。 class SomeClass { public: boost::function<void()> func; SomeClass(boost::function<void()> &func): func(func) { } }; void someFunc() { std::cout << "someFunc" << std::endl; } int main() { SomeClass sc(boost::function<void()>(&someFunc)); sc.func(); // error C2228: left of '.func' must have class/struct/union return 0; } class-SomeClass{ public:boost::function func; SomeClass(boost::function&func):func(func){} }; void someFunc(){ std::cout_C++_Visual C++_Templates_Argument Passing_Boost Function - Fatal编程技术网

在构造函数参数列表中构造boost::function对象时出现错误C2228 下面的代码在Visual C++ 2005中没有编译。 class SomeClass { public: boost::function<void()> func; SomeClass(boost::function<void()> &func): func(func) { } }; void someFunc() { std::cout << "someFunc" << std::endl; } int main() { SomeClass sc(boost::function<void()>(&someFunc)); sc.func(); // error C2228: left of '.func' must have class/struct/union return 0; } class-SomeClass{ public:boost::function func; SomeClass(boost::function&func):func(func){} }; void someFunc(){ std::cout

在构造函数参数列表中构造boost::function对象时出现错误C2228 下面的代码在Visual C++ 2005中没有编译。 class SomeClass { public: boost::function<void()> func; SomeClass(boost::function<void()> &func): func(func) { } }; void someFunc() { std::cout << "someFunc" << std::endl; } int main() { SomeClass sc(boost::function<void()>(&someFunc)); sc.func(); // error C2228: left of '.func' must have class/struct/union return 0; } class-SomeClass{ public:boost::function func; SomeClass(boost::function&func):func(func){} }; void someFunc(){ std::cout,c++,visual-c++,templates,argument-passing,boost-function,C++,Visual C++,Templates,Argument Passing,Boost Function,这被称为“C++最烦人的解析”(from) 同样,编译器更喜欢将有问题的行解释为函数声明。这是一个函数声明,用于引用一个boost:function并返回一个SomeClass。您可以记住以下规则,该规则适用于许多其他消除歧义的情况。您可以找到在C++标准的 8.2版/代码>中描述这些情况。 任何可能是声明的构造都将被视为声明 这意味着,以下内容将被视为参数声明,并带有多余的括号 boost::function<void()>(&someFunc) boost::funct

这被称为“C++最烦人的解析”(from)


同样,编译器更喜欢将有问题的行解释为函数声明。

这是一个函数声明,用于引用一个
boost:function
并返回一个
SomeClass
。您可以记住以下规则,该规则适用于许多其他消除歧义的情况。您可以找到在C++标准的<代码> 8.2版/代码>中描述这些情况。

任何可能是声明的构造都将被视为声明

这意味着,以下内容将被视为参数声明,并带有多余的括号

boost::function<void()>(&someFunc)
boost::function<void()>(&someFunc)
boost::function<void()> &someFunc
SomeClass sc(boost::function<void()> &someFunc);
SomeClass sc((boost::function<void()>)&someFunc);
int (((((((a))))))) = 3;
int (*(pa)) = &a;