Search Results

Search found 23472 results on 939 pages for 'virtual path'.

Page 282/939 | < Previous Page | 278 279 280 281 282 283 284 285 286 287 288 289  | Next Page >

  • No events are fired from an imagebrush via ImageOpened/ImageFailed

    - by umlgorithm
    A canvas is received from the server, and an image brush is extracted from the canvas via searching for a bunch of pathes. In summary, Canvas - Path - Path.Fill - ImageBrush. Now, I want to take a snapshot of the ImageBrush using WriteableBitmap when it is loaded and here is what I did var imageBrushes = VisualTreeUtility.FindVisualChildren<Path>(canvas) .Where(i => i.Fill.GetType() == typeof(ImageBrush)) .Select(p => p.Fill); foreach(var image in imageBrushes) { image.ImageOpened += delegate { //never gets here }; image.ImageFailed += delegate { //never gets here either }; // if the image is already loaded if (((BitmapSource)image.ImageSource).PixelWidth != 0) { // never gets here either } } As you can see the comments in the code above, no matter what I try, I can't seem to catch an event from the image. Any suggestions?

    Read the article

  • What's the right way to use idlestartup on python 2.6.5?

    - by user210481
    Idlestartup is analogous to pythonstartup variable, but for IDLE, instead of command line. But it seems not to work properly. I'm using python 2.6.5 on Windows. I have the following script assigned to it: from pprint import pprint import sys newPath = 'C:\\Python26\test') sys.path.append(newPath) print "initial config loaded" Both variables Idlestartup and pythonstartup are assigned to the same file (script above). When running IDLE, pprint and sys are NOT available, the final message is NOT printed, but newPath was added to sys.path. Running the command line, pprint and sys are available, the final message is printed and newPath was added to sys.path. Is it a bug? Am I doing something wrong? Thanks

    Read the article

  • Need help configuring SQL Server CE connections string in Fluent NHibernate

    - by Yoav
    Hi, I'm trying to return a session factory using this code: return Fluently.Configure() .Database(MsSqlCeConfiguration.Standard.ShowSql().ConnectionString(path)) .Mappings(m => m.FluentMappings.AddFromAssemblyOf<Project>()) .BuildSessionFactory(); Path is the full path to an .sdf file. And get this exception: System.ArgumentException: Format of the initialization string does not conform to specification starting at index 0. at System.Data.SqlServerCe.ConStringUtil.GetKeyValuePair(Char[] connectionString, Int32 currentPosition, String& key, Char[] valuebuf, Int32& vallength, Boolean& isempty) What am I doing wrong?

    Read the article

  • DataContext as Source for Converter Binding Within Resources

    - by loafofbread
    <Style TargetType="{x:Type local:SomeControl}"> <Canvas.DataContext> <ViewModels:VMSomeControl Model="{Binding RelativeSource={RelativeSource TemplatedParent}}" /> </Canvas.DataContext> <Canvas.Resources> <!-- is there a way to use a binding that points to the datacontext within the resources ? --> <Converters:SomeConverter x:Key="someConverter" SomeProperty="{Binding Path=Model.SomeProperty}" /> <!-- is there a way to point Directly to the TemplatedParent ? --> <Converters:SomeConverter x:Key="someConverter" SomeProperty="{TemplateBinding Path=SomeProperty}" /> </Canvas.Resources> <SomeFrameworkElement SomeProperty="{Binding Path=Model.SomeOtherProperty, Converter={StaticResource someConverter}}" /> </Canvas> is it possible to use bindings that use either the dataContext or the TemplatedParent Within a ControlTemplate's Root Visuals resourecs ?

    Read the article

  • List Directories and get the name of the Directory

    - by chrissygormley
    Hello, I am trying to get the code to list all the directories in a folder, change directory into that folder and get the name of the current folder. The code I have so far is below and isn't working at the minute. I seem to be getting the parent folder name. import os for directories in os.listdir(os.getcwd()): dir = os.path.join('/home/user/workspace', directories) os.chdir(dir) current = os.path.dirname(dir) new = str(current).split("-")[0] print new I also have other files in the folder but I do not want to list them. I have tried the below code but I haven't got it working yet either. for directories in os.path.isdir(os.listdir(os.getcwd())): Can anyone see where I am going wrong? Thanks

    Read the article

  • Scan from last instance of character to end of string using NSScanner

    - by Virgil Disgr4ce
    Given a string such as: "new/path - path/path/03 - filename.ext", how can I use NSScanner (or any other approach) to return the substring from the last "/" to the end of the string, i.e., "03 - filename.ext"? The code I've been trying to start with is: while ([fileScanner isAtEnd] == NO){ slashPresent = [fileScanner scanUpToString:@"/" intoString:NULL]; if (slashPresent == YES) { [fileScanner scanString:@"/" intoString:NULL]; lastPosition = [fileScanner scanLocation]; } NSLog(@"fileScanner position: %d", [fileScanner scanLocation]); NSLog(@"lastPosition: %d", lastPosition); } ...and this results in a seg fault after scanning to the end of the string! I'm not sure why this isn't working. Ideas? Thanks in advance!

    Read the article

  • "Genie" animation effect in XAML

    - by ScottCate
    What would the XAML look like to create a Genie animation effect? Take an object of any size/shape, and "Genie" it to another Minimized location. Kind of like the OSX window minimize. Maybe even a little fancier through a smoke-like effect where the path is more switch back, instead of a simple funnel (if that makes any sense). I'm guessing that there is some sort of Path that could be drawn, and the shape could move and transform along that path. Just a wild guess. Thanks for your ideas.

    Read the article

  • What does Rails script/server -d do differently that would cause a cells template to not be found

    - by Brian Deterling
    I'm using cells. I used the generator to create a cell so the path to my template was automatically chosen to be app/cells/displayer/table.html.erb where displayer is the name of the cell and table is the name of the state. When I run script/server in the foreground, everything works perfectly. But when I run script/server -d, I get "Missing template displayer/table.erb in view path app/cells:app/cells/layouts". Even if I change table.html.erb to table.erb, I see the same message - the ActionView code is checking both but not finding either. Even if you're not familiar with cells, does anyone know what happens differently in daemon mode related to view paths? In this case, it appears that the plugin is not correctly registering the view path.

    Read the article

  • Folder cleanup with PowerShell

    - by 280Z28
    I'd like to clean up some directories after my script runs by deleting certain folders and files from the current directory if they exist. Originally, I structured the script like this: if (Test-Path Folder1) { Remove-Item -r Folder1 } if (Test-Path Folder2) { Remove-Item -r Folder2 } if (Test-Path File1) { Remove-Item File1 } Now that I have quite a few items listed in this section, I'd like to clean it up. How can I do so? Side note: The items are cleaned up before the script runs, since they are left over from the previous run in case I need to examine them.

    Read the article

  • Remove unncessary error raised by paperclip - filename is not recognized by the 'identify' command.

    - by kgpdeveloper
    I've been searching on how to solve this issue but could not find any real and working solution. User model: validates_attachment_content_type :avatar, :content_type = ['image/jpeg', 'image/pjpeg', 'image/x-png', 'image/png', 'image/gif'] Unnecessary error shows up when invalid file type is uploaded: Avatar /tmp/sample,23283,0.txt is not recognized by the 'identify' command. Server details: Ubuntu and Debian which identify results to /usr/bin/identify Specifying command path does not solve the issue: Paperclip.options[:command_path] = "/usr/bin" Any ideas? I looked at geometry.rb file and there seems to be something wrong with it. def self.from_file file file = file.path if file.respond_to? "path" geometry = begin Paperclip.run("identify", %Q[-format "%wx%h" "#{file}"[0]]) rescue PaperclipCommandLineError "" end parse(geometry) || raise(NotIdentifiedByImageMagickError.new("#{file} is not recognized by the 'identify' command.")) end Let me know if anyone has solved the same issue and how. Many thanks.

    Read the article

  • Can 'locals' be used with 'collection' when rendering partials in Rails?

    - by Gav
    Everything works okay when I try to render a partial like this: = render :partial => "/shared/enquiry/car_type", :collection => @enquiry.available_car_types However, if I also want to pass a variable (in this case 'path', because I'm sharing this partial across two forms), the path is not available to me: = render :partial => "/shared/enquiry/car_type", :collection => @enquiry.available_car_types, :locals => {:path => customers_enquiry_path} I've tried moving things around, but nothing appears to work, leading me to believe one cannot use locals with collections. Any help would be appreciated. Gav

    Read the article

  • Logical python question - handeling directories and files in them

    - by Konstantin
    Hello! I'm using this function to extract files from .zip archive and store it on the server: def unzip_file_into_dir(file, dir): import sys, zipfile, os, os.path os.makedirs(dir, 0777) zfobj = zipfile.ZipFile(file) for name in zfobj.namelist(): if name.endswith('/'): os.mkdir(os.path.join(dir, name)) else: outfile = open(os.path.join(dir, name), 'wb') outfile.write(zfobj.read(name)) outfile.close() And the usage: unzip_file_into_dir('/var/zips/somearchive.zip', '/var/www/extracted_zip') somearchive.zip have this structure: somearchive.zip 1.jpeg 2.jpeg another.jpeg or, somethimes, this one: somearchive.zip somedir/ 1.jpeg 2.jpeg another.jpeg Question is: how do I modify my function, so that my extracted_zip catalog would always contain just images, not images in another subdirectory, even if images are stored in somedir inside an archive.

    Read the article

  • NodeJS vm.runInThisContext() and lack of __filename

    - by rFactor
    Whenever I run vm.runInThisContext(code, filename), the ran code reports __filename and __dirname as undefined. This also leads to the situation that any fs.readFile and such calls will not work with relative paths. For example this does not work: fs.readFile('../file', fn); because it does not know where to relate the path to. Specifying the filename as /home/full/path/to/file.js for vm.runInThisContext function does not seem to matter at all. How can I make Node to understand the path to the file?

    Read the article

  • WIX: Using a temporary file during install

    - by madbadger
    Hello! I am writing a WIX installer and I have a following requirement: During installation, I need to pass an absolute path to a file (lets call it A) included in my installer to a COM component, which already exists on the hard drive and is a part of another program. I have already written an appropriate Custom Action which expects a path to the file A. I don't want to include A as a file installed in the Program Files folder and removed during the uninstallation process. Instead, I would like to put A only temporary on the hard drive, call my Custom Action which will cause the COM component to use the content of A, and then remove A from disk. Is there an easy way to accomplish this goal? I have tried to utilize the Binary Table and store A there, however I don't know how to reference A using absolute path. I know I could put A outside of MSI file but I would like to keep every file installer needs in a single MSI. Any help would be appreciated.

    Read the article

  • Accessing mapped network drive from ColdFusion

    - by Kip
    I am having a problem accessing a mapped drive in ColdFusion. I have \\server\files\sharing mapped to z:\. If I run this code, it says the directory exists for the full path but not for the mapped one: <cfscript> fullPath = "\\server\files\sharing\reports"; mappedPath = "z:\reports"; WriteOutput("fullPath exists: #DirectoryExists(fullPath)#<br/>"); //YES WriteOutput("mappedPath exists: #DirectoryExists(mappedPath)#"); //NO </cfscript> I have done some Googling and have found a few people with the same problem, but the solution was always to use the full path. Is there a reason ColdFusion wouldn't be able to see or access the mapped drive? And if so, are there any workarounds (maybe a system call to get the full path of the mapped drive)?

    Read the article

  • PHP Dynamic Breadcrumb

    - by Adrian M.
    Hello, I got this code from someone and it works very well, I just want to remove the link from the last element of the array: //get rid of empty parts $crumbs = array_filter($crumbs); $result = array(); $path = ''; foreach($crumbs as $crumb){ $path .= '/' . $crumb; $name = ucfirst(str_replace(array(".php","_"),array(""," "), $crumb)); $result[] = "<a href=\"$path\">$name</a>"; } print implode(' > ', $result); This will output for example: Content Common File I just want a to remove the link from the last item - "File" to be just plain text.. I tried myself to count the array items and then if the array item is the last one then to print as plain text the last item.. but I'm still noob, I haven't managed to get a proper result.. Thank you!

    Read the article

  • Work with a local copy of the "master" SVN repo

    - by Werner
    Hi, at work, we have a SVN repo, which we access to thorugh http, like: svn co http://user@machine/PATH even at work and for some misterious reasons, teh connections between local machines and the repo machine are very slow, but the connection between home and work is almost impossible. I wonder if I could do somethin like: 1- get a copy of the "master" SVN repo to my local machine 2- each time i make modifications etc, use svn co http://user@MYLOCALmachine/PATH instead of svn co http://user@machine/PATH 3- when I am back at work, "merge" somehow all the modifications in my local repo to the master one. Sorry, I am ewally new to SVN, any hint would be appreciated. Thanks

    Read the article

  • unsupported major .minor version 51.0

    - by ERJAN
    I am trying to use notepad++ as my all-in-one tool edit, run, compile etc. I have jre installed, i have setup my path variable to .../bin directory. When I run my "Hello world" in notepad++ , I get this message: java.lang.UnsupportedClassVersionError: test_hello_world : Unsupported major.minor version 51.0 at java.lang.ClassLoader.defineClass1(Native Method) at java.lang.ClassLoader.defineClassCond(Unknown Source) ......................................... I think the problem here is about versions, some version of java may be old or too new. how do i fix it? should i install jdk , and setup my path variable to JDK instead of jre? difference between PATH variable in jre or jdk?

    Read the article

  • Dynamically register constructor methods in an AbstractFactory at compile time using C++ templates

    - by Horacio
    When implementing a MessageFactory class to instatiate Message objects I used something like: class MessageFactory { public: static Message *create(int type) { switch(type) { case PING_MSG: return new PingMessage(); case PONG_MSG: return new PongMessage(); .... } } This works ok but every time I add a new message I have to add a new XXX_MSG and modify the switch statement. After some research I found a way to dynamically update the MessageFactory at compile time so I can add as many messages as I want without need to modify the MessageFactory itself. This allows for cleaner and easier to maintain code as I do not need to modify three different places to add/remove message classes: #include <stdio.h> #include <stdlib.h> #include <string.h> #include <inttypes.h> class Message { protected: inline Message() {}; public: inline virtual ~Message() { } inline int getMessageType() const { return m_type; } virtual void say() = 0; protected: uint16_t m_type; }; template<int TYPE, typename IMPL> class MessageTmpl: public Message { enum { _MESSAGE_ID = TYPE }; public: static Message* Create() { return new IMPL(); } static const uint16_t MESSAGE_ID; // for registration protected: MessageTmpl() { m_type = MESSAGE_ID; } //use parameter to instanciate template }; typedef Message* (*t_pfFactory)(); class MessageFactory· { public: static uint16_t Register(uint16_t msgid, t_pfFactory factoryMethod) { printf("Registering constructor for msg id %d\n", msgid); m_List[msgid] = factoryMethod; return msgid; } static Message *Create(uint16_t msgid) { return m_List[msgid](); } static t_pfFactory m_List[65536]; }; template <int TYPE, typename IMPL> const uint16_t MessageTmpl<TYPE, IMPL >::MESSAGE_ID = MessageFactory::Register( MessageTmpl<TYPE, IMPL >::_MESSAGE_ID, &MessageTmpl<TYPE, IMPL >::Create); class PingMessage: public MessageTmpl < 10, PingMessage > {· public: PingMessage() {} virtual void say() { printf("Ping\n"); } }; class PongMessage: public MessageTmpl < 11, PongMessage > {· public: PongMessage() {} virtual void say() { printf("Pong\n"); } }; t_pfFactory MessageFactory::m_List[65536]; int main(int argc, char **argv) { Message *msg1; Message *msg2; msg1 = MessageFactory::Create(10); msg1->say(); msg2 = MessageFactory::Create(11); msg2->say(); delete msg1; delete msg2; return 0; } The template here does the magic by registering into the MessageFactory class, all new Message classes (e.g. PingMessage and PongMessage) that subclass from MessageTmpl. This works great and simplifies code maintenance but I still have some questions about this technique: Is this a known technique/pattern? what is the name? I want to search more info about it. I want to make the array for storing new constructors MessageFactory::m_List[65536] a std::map but doing so causes the program to segfault even before reaching main(). Creating an array of 65536 elements is overkill but I have not found a way to make this a dynamic container. For all message classes that are subclasses of MessageTmpl I have to implement the constructor. If not it won't register in the MessageFactory. For example commenting the constructor of the PongMessage: class PongMessage: public MessageTmpl < 11, PongMessage > { public: //PongMessage() {} /* HERE */ virtual void say() { printf("Pong\n"); } }; would result in the PongMessage class not being registered by the MessageFactory and the program would segfault in the MessageFactory::Create(11) line. The question is why the class won't register? Having to add the empty implementation of the 100+ messages I need feels inefficient and unnecessary.

    Read the article

  • Improve performance of sorting files by extension

    - by DxCK
    With a given array of file names, the most simpliest way to sort it by file extension is like this: Array.Sort(fileNames, (x, y) => Path.GetExtension(x).CompareTo(Path.GetExtension(y))); The problem is that on very long list (~800k) it takes very long to sort, while sorting by the whole file name is faster for a couple of seconds! Theoretical, there is a way to optimize it: instead of using Path.GetExtension() and compare the newly created extension-only-strings, we can provide a Comparison than compares starting from the LastIndexOf('.') without creating new strings. Now, suppose i found the LastIndexOf('.'), i want to reuse native .NET's StringComparer and apply it only to the part on string after the LastIndexOf('.'). Didn't found a way to do that. Any ideas?

    Read the article

  • VBScript - copy files modified in last 24 hours

    - by Martin North
    Hi, I'm trying to copy files from a directory where the last modified date is within 24hours of the current date. I'm using a wildcard in the filepath as it changes every day I'm using; option explicit dim fileSystem, folder, file dim path path = "d:\x\logs" Set fileSystem = CreateObject("Scripting.FileSystemObject") Set folder = fileSystem.GetFolder(path) for each file in folder.Files If DateDiff("d", file.DateLastModified, Now) < 1 Then filesystem.CopyFile "d:\x\logs\apache_access_log-*", "d:\completed logs\" WScript.Echo file.Name & " last modified at " & file.DateLastModified end if next Unfortunately this seems to be copying all files, and not just the recently modified ones. Can anyone point me in the right direction? many thanks Martin.

    Read the article

  • Remove empty subfolders with PHP

    - by Dmitry Letano
    I am working on a PHP function that will recursively remove all sub-folders that contain no files starting from a given absolute path. Here is the code developed so far: function RemoveEmptySubFolders($starting_from_path) { // Returns true if the folder contains no files function IsEmptyFolder($folder) { return (count(array_diff(glob($folder.DIRECTORY_SEPARATOR."*"), Array(".", ".."))) == 0); } // Cycles thorugh the subfolders of $from_path and // returns true if at least one empty folder has been removed function DoRemoveEmptyFolders($from_path) { if(IsEmptyFolder($from_path)) { rmdir($from_path); return true; } else { $Dirs = glob($from_path.DIRECTORY_SEPARATOR."*", GLOB_ONLYDIR); $ret = false; foreach($Dirs as $path) { $res = DoRemoveEmptyFolders($path); $ret = $ret ? $ret : $res; } return $ret; } } while (DoRemoveEmptyFolders($starting_from_path)) {} } As per my tests this function works, though I would be very delighted to see any ideas for better performing code.

    Read the article

  • Wpf Listbox and CheckBox

    - by Tan
    Hi iam using a listbox to show a list of items. in the listbox i ahve an togglebutton on every item. When i click on the toggle button the state of the togglebutton is pressed. But when i am scrolling down in the listbox and scolls up again. The togglebutton state is not pressed. How can i prevent this please help. Heres my itemtemplate <ListBox.ItemTemplate> <DataTemplate> <StackPanel Margin="0,3,0,0"> <Border BorderBrush="Black" BorderThickness="1,1,1,1"> <Border.Background> <LinearGradientBrush EndPoint="0.5,1" StartPoint="0.5,0" MappingMode="RelativeToBoundingBox"> <GradientStop Color="#FFECECEC" Offset="1"/> <GradientStop Color="#FFE8E8E8"/> <GradientStop Color="#FFBDBDBD" Offset="0.153"/> <GradientStop Color="#FFE8E8E8" Offset="0.904"/> </LinearGradientBrush> </Border.Background> <Border.Style> <Style> <Style.Triggers> <DataTrigger Binding="{Binding Path=IsSelected, RelativeSource={RelativeSource Mode=FindAncestor,AncestorType={x:Type ListBoxItem}}}" Value="True"> <Setter Property="Border.Height" Value="100"/> <Setter Property="Border.Background"> <Setter.Value> <LinearGradientBrush EndPoint="0.5,1" StartPoint="0.5,0" MappingMode="RelativeToBoundingBox"> <GradientStop Color="DarkGray" Offset="1"/> <GradientStop Color="#FFE8E8E8"/> <GradientStop Color="#FFBDBDBD" Offset="0.153"/> <GradientStop Color="DarkGray" Offset="0.904"/> </LinearGradientBrush> </Setter.Value> </Setter> </DataTrigger> </Style.Triggers> </Style> </Border.Style> <StackPanel Orientation="Horizontal" VerticalAlignment="Center"> <Grid> <Grid.ColumnDefinitions> <ColumnDefinition Width="500"/> <ColumnDefinition Width="100"/> <ColumnDefinition Width="55"/> </Grid.ColumnDefinitions> <!--Pick number--> <StackPanel Grid.Column="0" VerticalAlignment="Center" Orientation="Vertical"> <TextBlock Text="{Binding Path=FtgNamn}" FontWeight="Bold" FontSize="22pt" FontFamily="Calibri"/> <TextBlock Text="{Binding Path=LevsAttBeskr}" FontSize="18pt" FontFamily="Calibri"/> </StackPanel> <!--Pick Quantity--> <StackPanel Grid.Column="1" VerticalAlignment="Center"> <TextBlock Text="{Binding Path=Antal}" FontSize="44pt" FontFamily="Calibri"/> </StackPanel> <!-- Checkbox--> <StackPanel Grid.Column="2" VerticalAlignment="Center" HorizontalAlignment="Center"> <ToggleButton Name="Check" Width="40" Height="40" Click="Check_Click" Tag="{Binding Path=Plocklista}"> <ToggleButton.Style> <Style TargetType="ToggleButton"> <Setter Property="Template"> <Setter.Value> <ControlTemplate TargetType="{x:Type ToggleButton}"> <Border x:Name="InnerBorder" Background="White" BorderBrush="Black" BorderThickness="1"/> <ControlTemplate.Triggers> <Trigger Property="IsChecked" Value="True"> <Setter TargetName="InnerBorder" Property="Background"> <Setter.Value> <ImageBrush ImageSource="/Images/button_ok.png"/> </Setter.Value> </Setter> <Setter TargetName="InnerBorder" Property="BorderThickness" Value="0"/> </Trigger> </ControlTemplate.Triggers> </ControlTemplate> </Setter.Value> </Setter> </Style> </ToggleButton.Style> </ToggleButton> </StackPanel> </Grid> <Border BorderBrush="Darkgray" BorderThickness="0,0,1,0"> </Border> <TextBlock Width="100" Text="{Binding Path=Quantity}" FontSize="44pt" FontFamily="Calibri"/> <CheckBox Width="78"/> </StackPanel> </Border> </StackPanel> </DataTemplate>

    Read the article

  • Referencing View directory in asp.net mvc

    - by ooo
    i have some html files as part of a regular website that has been ported over to asp.net mvc. In my code i need to read and write these html files and stick them in a tinymce editor To be able to read and write this file from disk in the past i had a hard coded path but this doesn't seem to work in asp.net mvc unless i do something like this: Writing: string _urlDirectory = @"c:\hosting\MySite\Views\Members\newsletters\test.html"; System.IO.File.WriteAllText(_urlDirectory, htmlData_); Reading: string url = @"c:\hosting\MySite\Views\Members\newsletters\test.html"; var req = WebRequest.Create(url); var response = req.GetResponse(); StreamReader sr = new StreamReader(response.GetResponseStream()); string htmlData_ = sr.ReadToEnd(); i am moving my site from one data center to another and the directory structure is changing. instead of just changing the hard coded path to another hard coded path i wanted to see if there was a more relative way to reference these files.

    Read the article

  • compile time if && return string reference optimization

    - by Truncheon
    Hi. I'm writing a series classes that inherit from a base class using virtual. They are INT, FLOAT and STRING objects that I want to use in a scripting language. I'm trying to implement weak typing, but I don't want STRING objects to return copies of themselves when used in the following way (instead I would prefer to have a reference returned which can be used in copying): a = "hello "; b = "world"; c = a + b; I have written the following code as a mock example: #include <iostream> #include <string> #include <cstdio> #include <cstdlib> std::string dummy("<int object cannot return string reference>"); struct BaseImpl { virtual bool is_string() = 0; virtual int get_int() = 0; virtual std::string get_string_copy() = 0; virtual std::string const& get_string_ref() = 0; }; struct INT : BaseImpl { int value; INT(int i = 0) : value(i) { std::cout << "constructor called\n"; } INT(BaseImpl& that) : value(that.get_int()) { std::cout << "copy constructor called\n"; } bool is_string() { return false; } int get_int() { return value; } std::string get_string_copy() { char buf[33]; sprintf(buf, "%i", value); return buf; } std::string const& get_string_ref() { return dummy; } }; struct STRING : BaseImpl { std::string value; STRING(std::string s = "") : value(s) { std::cout << "constructor called\n"; } STRING(BaseImpl& that) { if (that.is_string()) value = that.get_string_ref(); else value = that.get_string_copy(); std::cout << "copy constructor called\n"; } bool is_string() { return true; } int get_int() { return atoi(value.c_str()); } std::string get_string_copy() { return value; } std::string const& get_string_ref() { return value; } }; struct Base { BaseImpl* impl; Base(BaseImpl* p = 0) : impl(p) {} ~Base() { delete impl; } }; int main() { Base b1(new INT(1)); Base b2(new STRING("Hello world")); Base b3(new INT(*b1.impl)); Base b4(new STRING(*b2.impl)); std::cout << "\n"; std::cout << b1.impl->get_int() << "\n"; std::cout << b2.impl->get_int() << "\n"; std::cout << b3.impl->get_int() << "\n"; std::cout << b4.impl->get_int() << "\n"; std::cout << "\n"; std::cout << b1.impl->get_string_ref() << "\n"; std::cout << b2.impl->get_string_ref() << "\n"; std::cout << b3.impl->get_string_ref() << "\n"; std::cout << b4.impl->get_string_ref() << "\n"; std::cout << "\n"; std::cout << b1.impl->get_string_copy() << "\n"; std::cout << b2.impl->get_string_copy() << "\n"; std::cout << b3.impl->get_string_copy() << "\n"; std::cout << b4.impl->get_string_copy() << "\n"; return 0; } It was necessary to add an if check in the STRING class to determine whether its safe to request a reference instead of a copy: Script code: a = "test"; b = a; c = 1; d = "" + c; /* not safe to request reference by standard */ C++ code: STRING(BaseImpl& that) { if (that.is_string()) value = that.get_string_ref(); else value = that.get_string_copy(); std::cout << "copy constructor called\n"; } If was hoping there's a way of moving that if check into compile time, rather than run time.

    Read the article

< Previous Page | 278 279 280 281 282 283 284 285 286 287 288 289  | Next Page >