boost::function
-
War zu langsam mit Editieren
function1 sollte es bei Dir sein:
#include <boost/function/function1.hpp> boost::function1< int(int a) >;
-
ricky schrieb:
aber
boost::function< int( int a ) > f = foo; std::cout << f( 1 ) << std::endl;
aber hier wird ja auch schon zur compilezeit bestimmt was aufgerufen wird?
#include <iostream> #include <boost/function.hpp> int foo( int a ) { return a; } int bar( int a ) { return 42; } int main( ) { int a; std::cin >> a; boost::function< int( int a ) > f; if( a < 10 ) { f = foo; } else { f = bar; } std::cout << f( a ) << std::endl; }
Greetz, Swordfish
-
vielleicht so @Swordfish:
#include <iostream> #include <boost/function/function1.hpp> int foo( int a ) { return a; } int main( ) { boost::function1< int, int> f; f = foo; std::cout << f( 1 ) << std::endl; }
-
@swordfish
Dein letztes Beispiel compiliert und läuft bei mir einwandfrei mit VC8.0
-
1310-Logik schrieb:
War zu langsam mit Editieren
function1 sollte es bei Dir sein:
#include <boost/function/function1.hpp> boost::function1< int(int a) >;
#include <iostream> #include <boost/function/function1.hpp> /* 003 */ /* 004 */ int foo( int a ) /* 005 */ { /* 006 */ return a; /* 007 */ } /* 008 */ /* 009 */ int main( ) /* 010 */ { /* 011 */ boost::function1< int, int > f = foo; /* 012 */ /* 013 */ std::cout << f( 1 ) << std::endl; /* 014 */ }
MSVC v7.1 schrieb:
main.cpp
d:\root\projects\_Visual Studio\test\main.cpp(11) : error C2440: 'Initialisierung' : 'int (__cdecl *)(int)' kann nicht in 'boost::function1' konvertiert werden
with
[
R=int,
T0=int,
Allocator=int
]
Quelltyp konnte von keinem Konstruktor angenommen werden, oder die Überladungsauflösung des Konstruktors ist mehrdeutigGreetz, Swordfish
-
#include <iostream> #include <boost/function.hpp> int foo( int a ) { return a; } int bar( int a ) { return 42; } int main( ) { int a; std::cin >> a; boost::function< int( int a ) > f; if( a < 10 ) { f = foo; } else { f = bar; } std::cout << f( a ) << std::endl; std::cout << std::endl << "Hit enter to close window" << std::endl; std::cin.clear(); std::cin.ignore( std::cin.rdbuf()->in_avail() ); std::cin.get(); return 0; }
Compiling...
Main.cpp
Compiling manifest to resources...
Linking...
LINK : C:\...\Visual Studio 2005\Projects\Boost test\Debug\Boost test.exe not found or not built by the last incremental link; performing full link
Embedding manifest...
Build log was saved at "file://c:\Dokumente und Einstellungen\Sebi\Eigene Dateien\Visual Studio 2005\Projects\Boost test\Boost test\Debug\BuildLog.htm"
Boost test - 0 error(s), 0 warning(s)
========== Rebuild All: 1 succeeded, 0 failed, 0 skipped ==========
-
#include <iostream> #include <boost/function.hpp> /* 003 */ /* 004 */ int foo( int a ) /* 005 */ { /* 006 */ return a; /* 007 */ } /* 008 */ /* 009 */ int main( ) /* 010 */ { /* 011 */ boost::function< int(int a) > f = foo; /* 012 */ /* 013 */ std::cout << f( 1 ) << std::endl; /* 014 */ }
------ Rebuild All started: Project: Boost test, Configuration: Debug Win32 ------
Deleting intermediate and output files for project 'Boost test', configuration 'Debug|Win32'
Compiling...
Main.cpp
Compiling manifest to resources...
Linking...
LINK : C:\...\Visual Studio 2005\Projects\Boost test\Debug\Boost test.exe not found or not built by the last incremental link; performing full link
Embedding manifest...
Build log was saved at "file://c:\Dokumente und Einstellungen\Sebi\Eigene Dateien\Visual Studio 2005\Projects\Boost test\Boost test\Debug\BuildLog.htm"
Boost test - 0 error(s), 0 warning(s)
========== Rebuild All: 1 succeeded, 0 failed, 0 skipped ==========Ausgabe
1
-
#include <iostream> #include <boost/function/function1.hpp> int foo( int a ) { return a; } int main( ) { boost::function1< int, int > f = foo; std::cout << f( 1 ) << std::endl; } ------ Build started: Project: Boost_Test, Configuration: Release Win32 ------ Compiling... main.cpp Linking... Generating code Finished generating code Embedding manifest... Build log was saved at "file://c:\Boost_Test\Release\BuildLog.htm" Test2 - 0 error(s), 0 warning(s) ========== Build: 1 succeeded, 0 failed, 0 up-to-date, 0 skipped ==========
-
ricky schrieb:
vielleicht so @Swordfish:
#include <iostream> #include <boost/function/function1.hpp> int foo( int a ) { return a; } int main( ) { boost::function1< int, int> f; f = foo; std::cout << f( 1 ) << std::endl; }
thx
@1310-Logik: Hä!? Selber Source:
MSVC v7.1 (??) schrieb:
main.cpp
d:\root\projects\_Visual Studio\Kakauautomat\main.cpp(19) : error C2039: 'function' : Ist kein Element von 'boost'
d:\root\projects\_Visual Studio\Kakauautomat\main.cpp(19) : error C2065: 'function' : nichtdeklarierter Bezeichner
d:\root\projects\_Visual Studio\Kakauautomat\main.cpp(19) : error C2144: Syntaxfehler : 'int' sollte auf ')' folgen
d:\root\projects\_Visual Studio\Kakauautomat\main.cpp(19) : error C2059: Syntaxfehler : ')'
d:\root\projects\_Visual Studio\Kakauautomat\main.cpp(23) : error C2065: 'f' : nichtdeklarierter Bezeichner
d:\root\projects\_Visual Studio\Kakauautomat\main.cpp(30) : error C2593: 'Operator <<' ist mehrdeutigMoment 'mal wie bekomm ich die Compilerversion 'raus?
Greetz, Swordfish
-
bei mir so: Visual Studio 2005 Command Prompt starten dann folgendes eintippen:
C:\>vbc Microsoft (R) Visual Basic Compiler version 8.0.50727.42 for Microsoft (R) .NET Framework version 2.0.50727.42 Copyright (c) Microsoft Corporation. All rights reserved.
cu
-
ricky schrieb:
[...] Microsoft (R) Visual Basic Compiler version 8.0.50727.42 [...]
und was mach ich mit der Versionsnummer eines Visual Basic Compilers!?
Greetz, Swordfish
-
Vielleicht dasselbe nochmal mit dem Visual C++ Compiler?
-
obs*g* naja ich glaub kaum das der vc compiler ne andere nummer hat;)
ruf mal cl onder nmake auf...
cu
-
@LordJaxom: kar, aber wie heißt der?
Greetz, Swordfish
-
C:\Programme\Microsoft Visual Studio 8\VC\bin>nmake Microsoft (R) Program Maintenance Utility Version 8.00.50727.42 Copyright (C) Microsoft Corporation. All rights reserved. NMAKE : fatal error U1064: MAKEFILE not found and no target specified Stop.
oder?
-
fu*k:
Microsoft (R) Program Maintenance Utility, Version 7.00.9466
Damit hat sich das Thema mit boost::function wohl erledigt. Kann mir jemand verraten, ob man in ein MSVS 2002 .net einen späteren Compiler einbinden kann?
Greetz, Swordfish
-
hast du boost mit "-sTOOLS=vc-7_0" compiliert?
cu
-
Ne, aber jetzt compilier ich 'grad mit "-sTOOLS=vc7".
Greetz, Swordfish
-
und gehts besser?
-
Hallo,
Mircosoftprodukte machen nur ärger :D.
MFG winexec*