Jump to content

Assignment and Copy Constructors in C++ Classes [SOLVED]


Recommended Posts

Hi all,

Im building a variant class that I want to make work, but Im running into compiler issues; issues that highlight that I have no idea what is going on under the hood for operators in C++.

My class looks something like:

class Variant
{
public:
    //Constructors
    Variant(void) : type(VAR_INTTYPE), int64value(0), databuffsize(0), databuff((char*)0) {}
    Variant(int);
    Variant(long long);
    Variant(double);
    Variant(const char* in);
    Variant(char* in);
    Variant(Variant & in);//Copy Constructor
    ~Variant();//Destructor


    //Operators
    Variant& operator= (Variant&);
    Variant& operator= (Variant);
    //Other irrelvant code...
}

And Im trying to do things like:

Variant test;
int main()
{  
    test = Variant(20); //btw, I have no intention of implementing assignment ops for primitive types for various reasons
    Variant lol(7);
    lol = test;
    return 0;
}

In GCC (mingw) this is throwing errors like:

error: no matching function to call for 'Variant::Variant(Variant)'

Any ideas what constructors or operators I am missing? I have looked around and cannot find any solution to my problem.

Thanks in advance.

Edited by twitchyliquid64

ongoing projects:-firestorm: Largescale P2P Social NetworkCompleted Autoit Programs/Scripts: Variable Pickler | Networked Streaming Audio (in pure autoIT) | firenet p2p web messenger | Proxy Checker | Dynamic Execute() Code Generator | P2P UDF | Graph Theory Proof of Concept - Breadth First search

Link to post
Share on other sites

Copy constructor is not const correct. Also, did you actually implement the copy constructor or just declare it? If you did declare it in a separate file you didn't make it inline, did you?

all the methods listed there are fully implemented in the variant.cpp file.

I'm pretty sure i inlined it ... is that bad? file size isn't an issue.

what do you mean by not const correct? do you mean i need a constructor with a const variant reference as the parameter?

ongoing projects:-firestorm: Largescale P2P Social NetworkCompleted Autoit Programs/Scripts: Variable Pickler | Networked Streaming Audio (in pure autoIT) | firenet p2p web messenger | Proxy Checker | Dynamic Execute() Code Generator | P2P UDF | Graph Theory Proof of Concept - Breadth First search

Link to post
Share on other sites

Thanks everyone for your help. In the end the problem was that my copy constructor needed to accept a const reference rather than just a reference.

ongoing projects:-firestorm: Largescale P2P Social NetworkCompleted Autoit Programs/Scripts: Variable Pickler | Networked Streaming Audio (in pure autoIT) | firenet p2p web messenger | Proxy Checker | Dynamic Execute() Code Generator | P2P UDF | Graph Theory Proof of Concept - Breadth First search

Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
  • Recently Browsing   0 members

    No registered users viewing this page.

  • Similar Content

    • By pete_wilde
      Hi Guys,

      I have a very, very, very long script.

      Occasionally, it throws up a strange error dialogue box.
      It's a standard Windows dialogue box, similar to that generated with the MsgBox ( flag, "title", "text" [, timeout = 0 [, hwnd]] ) command.
      However,  it shows no line number, and the window just says "Error". There is a single Ok button, which when clicked causes the script to exit.

      It's not part of my coding, so I am guessing that it is being generated by the AutoIT interpreter, but I have no idea why.
      The script is hundreds of lines long, so it's not something which I can realistically trace without a line number.

      I do have other scripts which also run 24/7, and none of them have this problem.

      Any ideas as to why such an unknown error box gets generated.
      That would at least give me a starting point.

      Many thanks,
      Pete



       
    • By raj9039852537
      Hello all,
      I am trying to use script from This Link on windows 11. The script randomly crashes showing error about nonexistent variable at 
      $x = $pos^ This happens whenever start menu is opened.
      any solution?
    • By DevMode
      welcome
      I need help dealing with a C++ DLL
      Specify that I need help with how to use this function
      struct libusb_device; typedef struct libusb_context libusb_context; ssize_t LIBUSB_CALL libusb_get_device_list(libusb_context *ctx,libusb_device ***list); My problem is how to deal with "libusb_device ***list"
      my code 
      $libusb_device = DllStructCreate("PTR") Func libusb_init() $Var = DllCall($libusb0, "ptr", "libusb_init",'ptr',$_libusb_device_handle_Ptr) If @error Then Return False Return $Var[1] EndFunc Func libusb_get_device_list() MsgBox(0,VarGetType($_libusb_device_handle_Ptr),$_libusb_device_handle_Ptr) $Var = DllCall($libusb0, "int", "libusb_get_device_list","ptr",$_libusb_device_handle_Ptr,"ptr*",POINTER(POINTER($libusb_device))) $Error = @error If $Error Then Return False MsgBox(0,VarGetType($Var),$Error&@CRLF&$Var) _ArrayDisplay($Var) Return $Var[1] EndFunc  
      Thank you
      iLibUSB.dll iLibUSB_32.dll libusb.h
    • By vinnyMS
      #Include <Array.au3> #include <Constants.au3> $s = FileRead("2.txt") Local $w = StringRegExp($s, '(?is)(\b\w+\b)(?!.*\b\1\b)', 3) _ArrayColInsert($w, 1) For $i = 0 to UBound($w)-1 StringRegExpReplace($s, '(?i)\b' & $w[$i][0] & '\b', $w[$i][0]) $w[$i][1] = @extended Next _ArraySort($w, 1, 0, 0, 1) _ArrayDisplay($w) i have this script that returns 3 columns  
       
      i need to copy the  Col 0 and Col 1 as text to paste on notepad or excel
      you will have to create a "copy" button if possible
      array.au3 2.txt
    • By Jamestay97
      Hello! Thanks you for looking at my post
      **No source code I'm sorry work related can't copy information**
      I've been using autoit for about 1 year. 
      I'm having trouble automating a click on an internet explorer web page and I've tried a lot of examples from help pages and forums already. The object I'm trying to click on isnt always in the same spot so I can't use mouse click or control click, I have tried to use the different get collection options and clickbyname, or index or get object. I'm just struggling. 
      Description of object I'm trying to click -- 
      HTML Code looks like <a ng-click.. "Click Here" it appears it's just a click able object named "click here" that opens a hidden window by running a script inside the web page. I'm not able to grab the information from the window unless it's open so I have to automate this click somehow. 
       
      I understand it's difficult to assist without having something to look at, I apologize for that sincerely and appreciate and assistance and suggestions. 
×
×
  • Create New...