Skip to content
  • Categories
  • Recent
  • Tags
  • Popular
  • World
  • Users
  • Groups
Skins
  • Light
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • Dark
  • Cyborg
  • Darkly
  • Quartz
  • Slate
  • Solar
  • Superhero
  • Vapor

  • Default (No Skin)
  • No Skin
Collapse
Code Project
  1. Home
  2. General Programming
  3. ATL / WTL / STL
  4. Problem in transform function

Problem in transform function

Scheduled Pinned Locked Moved ATL / WTL / STL
helpgraphicsdebuggingquestion
12 Posts 2 Posters 0 Views 1 Watching
  • Oldest to Newest
  • Newest to Oldest
  • Most Votes
Reply
  • Reply as topic
Log in to reply
This topic has been deleted. Only users with topic management privileges can see it.
  • S Stuart Dootson

    Given that I've made assumptions about context (definitions of PC? PC_type? headers you include?), it's difficult to say if I've done the same as you. But your code compiles and links for me under VS2008. What version are you using?

    Java, Basic, who cares - it's all a bunch of tree-hugging hippy cr*p

    A Offline
    A Offline
    ashtwin
    wrote on last edited by
    #3

    Hi, Thanks for replying. I am using VS98(VC6.0) :) . The headers file and defination of PC is as follows

    #include <algorithm>

    #include <functional>

    #include <iomanip>

    #include <iostream>

    #include <map>

    #include <string>

    #include <utility>

    #include <vector>

    using namespace std;

    class PC

    {

    public:

            enum PC\_type { Dell, HP, IBM, Compaq };
    
            
    
            PC( PC\_type appliance = Dell, int model = 220,
    
                        int serial = 0 );
    
            
    
            bool operator<( const PC& rhs ) const;
    
            
    
            PC\_type appliance() const;
    
            int model() const;
    
            string name() const;
    
            
    
            void print() const;
    
            
    
            int serial() const;
    

    private:

            PC\_type appliance\_;
    
            int model\_;
    
            int serial\_;
    

    };

    S 1 Reply Last reply
    0
    • A ashtwin

      Hi, Thanks for replying. I am using VS98(VC6.0) :) . The headers file and defination of PC is as follows

      #include <algorithm>

      #include <functional>

      #include <iomanip>

      #include <iostream>

      #include <map>

      #include <string>

      #include <utility>

      #include <vector>

      using namespace std;

      class PC

      {

      public:

              enum PC\_type { Dell, HP, IBM, Compaq };
      
              
      
              PC( PC\_type appliance = Dell, int model = 220,
      
                          int serial = 0 );
      
              
      
              bool operator<( const PC& rhs ) const;
      
              
      
              PC\_type appliance() const;
      
              int model() const;
      
              string name() const;
      
              
      
              void print() const;
      
              
      
              int serial() const;
      

      private:

              PC\_type appliance\_;
      
              int model\_;
      
              int serial\_;
      

      };

      S Offline
      S Offline
      Stuart Dootson
      wrote on last edited by
      #4

      ashtwin wrote:

      Thanks for replying. I am using VS98(VC6.0)

      My commiserations - VC6 sucks for template usage. Anyway - try declaring the make_pair instance you need before main():

      template std::pairPC::PC\_type,PC std::make_pairPC::PC\_type,PC(PC::PC_type,PC);

      int main( )
      {
      // Rest of your code

      Java, Basic, who cares - it's all a bunch of tree-hugging hippy cr*p

      A 1 Reply Last reply
      0
      • S Stuart Dootson

        ashtwin wrote:

        Thanks for replying. I am using VS98(VC6.0)

        My commiserations - VC6 sucks for template usage. Anyway - try declaring the make_pair instance you need before main():

        template std::pairPC::PC\_type,PC std::make_pairPC::PC\_type,PC(PC::PC_type,PC);

        int main( )
        {
        // Rest of your code

        Java, Basic, who cares - it's all a bunch of tree-hugging hippy cr*p

        A Offline
        A Offline
        ashtwin
        wrote on last edited by
        #5

        Hi, i tried the declaration before main

        template std::pair<PC::PC_type,PC> std::make_pair<PC::PC_type,PC>(PC::PC_type,PC);
        int main( ){

        but still getting the same error. May be some problem in project settings.

        S A 2 Replies Last reply
        0
        • A ashtwin

          Hi, i tried the declaration before main

          template std::pair<PC::PC_type,PC> std::make_pair<PC::PC_type,PC>(PC::PC_type,PC);
          int main( ){

          but still getting the same error. May be some problem in project settings.

          S Offline
          S Offline
          Stuart Dootson
          wrote on last edited by
          #6

          No, shouldn't be project settings. And I don't have VC6 to test with. Oh well.

          Java, Basic, who cares - it's all a bunch of tree-hugging hippy cr*p

          A 1 Reply Last reply
          0
          • A ashtwin

            Hi, i tried the declaration before main

            template std::pair<PC::PC_type,PC> std::make_pair<PC::PC_type,PC>(PC::PC_type,PC);
            int main( ){

            but still getting the same error. May be some problem in project settings.

            A Offline
            A Offline
            ashtwin
            wrote on last edited by
            #7

            Sorry, the declaration before main is

            template std::pairPC::PC\_type,PC std::make_pairPC::PC\_type,PC(PC::PC_type,PC);

            1 Reply Last reply
            0
            • S Stuart Dootson

              No, shouldn't be project settings. And I don't have VC6 to test with. Oh well.

              Java, Basic, who cares - it's all a bunch of tree-hugging hippy cr*p

              A Offline
              A Offline
              ashtwin
              wrote on last edited by
              #8

              The program is getting build properly if i use a function insted of make_pair in the last parameter of the function transform and return a pair from that function.

              pair<PC::PC_type, PC> MyFunction(PC::PC_type pcType, PC pc)
              {
              return make_pair(pcType, pc);
              }
              transform( kind, kind+num_appliances, v.begin(),inserter( stock, stock.end() ),MyFunction);

              S 1 Reply Last reply
              0
              • A ashtwin

                The program is getting build properly if i use a function insted of make_pair in the last parameter of the function transform and return a pair from that function.

                pair<PC::PC_type, PC> MyFunction(PC::PC_type pcType, PC pc)
                {
                return make_pair(pcType, pc);
                }
                transform( kind, kind+num_appliances, v.begin(),inserter( stock, stock.end() ),MyFunction);

                S Offline
                S Offline
                Stuart Dootson
                wrote on last edited by
                #9

                Yes...I should have mentioned that solution :-O In this one, you're not asking the compiler to automatically instantiate a function from the reference in transform, so yes, it includes all the necessary code.

                Java, Basic, who cares - it's all a bunch of tree-hugging hippy cr*p

                A 1 Reply Last reply
                0
                • S Stuart Dootson

                  Yes...I should have mentioned that solution :-O In this one, you're not asking the compiler to automatically instantiate a function from the reference in transform, so yes, it includes all the necessary code.

                  Java, Basic, who cares - it's all a bunch of tree-hugging hippy cr*p

                  A Offline
                  A Offline
                  ashtwin
                  wrote on last edited by
                  #10

                  Does it mean that whatever i was doing earlier was not correct.

                  S 1 Reply Last reply
                  0
                  • A ashtwin

                    Does it mean that whatever i was doing earlier was not correct.

                    S Offline
                    S Offline
                    Stuart Dootson
                    wrote on last edited by
                    #11

                    Ummm - it should have been correct and OK - but VC6 is a bit rubbish, which is why it didn't work.

                    Java, Basic, who cares - it's all a bunch of tree-hugging hippy cr*p

                    A 1 Reply Last reply
                    0
                    • S Stuart Dootson

                      Ummm - it should have been correct and OK - but VC6 is a bit rubbish, which is why it didn't work.

                      Java, Basic, who cares - it's all a bunch of tree-hugging hippy cr*p

                      A Offline
                      A Offline
                      ashtwin
                      wrote on last edited by
                      #12

                      Ok, so the problem is with vc6. Thanks for the help.

                      1 Reply Last reply
                      0
                      Reply
                      • Reply as topic
                      Log in to reply
                      • Oldest to Newest
                      • Newest to Oldest
                      • Most Votes


                      • Login

                      • Don't have an account? Register

                      • Login or register to search.
                      • First post
                        Last post
                      0
                      • Categories
                      • Recent
                      • Tags
                      • Popular
                      • World
                      • Users
                      • Groups