I tried going through some tasks to make sure of what I was doing
The following Objective-c ran okay. This was main.m
#import <CoreFoundation/CoreFoundation.h>
int main(int argc, const char ** argv) {
@autoreleasepool {
CFStringEncoding encoding = kCFStringEncodingMacRomanLatin1;
char *string1;
char *string2;
char start1[] = "First CString";
CFStringRef CF1 = CFStringCreateWithCString(NULL, (char *) &start1, encoding);
CFStringRef CF2 = CFSTR("Second CString");
string1 = (char *) CFStringGetCStringPtr(CF1, kCFStringEncodingMacRomanLatin1);
string2 = (char *) CFStringGetCStringPtr(CF2, kCFStringEncodingMacRomanLatin1);
CFStringRef CF3 = CFStringCreateWithCString(NULL, "Third CString", encoding);
printf ("%s::%s\r\n", string1, string2);
printf ("%s\r\n", CFStringGetCStringPtr(CF1, encoding));
printf ("%s\r\n", CFStringGetCStringPtr(CF2, encoding));
printf ("%s\r\n", CFStringGetCStringPtr(CF3, encoding));
CFStringRef list[100];
list[0] = CFSTR("First item");
list[1] = CFSTR("Second item");
list[2] = CFSTR("Third item");
list[3] = CFSTR("Fourth item");
list[4] = CFSTR("Fifth item");
CFArrayRef array = CFArrayCreate(NULL, (void **) &list, 4, &kCFTypeArrayCallBacks);
printf("%ld items\r\n", CFArrayGetCount(array));
}
}
When I tried using it as a Objective-C++ (main.mm), it gave me the message "No matching function for call 'CFArrayCreate' "
#import <CoreFoundation/CoreFoundation.h>
using namespace std;
int main(int argc, const char ** argv) {
@autoreleasepool {
CFStringEncoding encoding = kCFStringEncodingMacRomanLatin1;
char *string1;
char *string2;
/
char start1[] = "First CString";
CFStringRef CF1 = CFStringCreateWithCString(NULL, (char *) &start1, encoding);
CFStringRef CF2 = CFSTR("Second CString");
string1 = (char *) CFStringGetCStringPtr(CF1, kCFStringEncodingMacRomanLatin1);
string2 = (char *) CFStringGetCStringPtr(CF2, kCFStringEncodingMacRomanLatin1);
CFStringRef CF3 = CFStringCreateWithCString(NULL, "Third CString", encoding);
printf ("%s::%s\r\n", string1, string2);
printf ("%s\r\n", CFStringGetCStringPtr(CF1, encoding));
printf ("%s\r\n", CFStringGetCStringPtr(CF2, encoding));
printf ("%s\r\n", CFStringGetCStringPtr(CF3, encoding));
CFStringRef list[100];
list[0] = CFSTR("First item");
list[1] = CFSTR("Second item");
list[2] = CFSTR("Third item");
list[3] = CFSTR("Fourth item");
list[4] = CFSTR("Fifth item");
CFArrayRef array = CFArrayCreate(NULL, (void **) &list, 4, &kCFTypeArrayCallBacks);
}
}
I know that I could do this as Objective-C instead of having to use Objective-C++. However, I'm already being considered a busybody for suggesting unnecessary changes.
Thank you for your assistance. I'm sure I will scream about the obviousnes of the problem when I learn the answer, but I'm getting confused. When I removed the line for CFArrayCreate, the rest of the code worked fine. So CFStringCreareWithCString, CFStrinGetCStringPtr, and CFSTR work fine. However, I'm having problems with some of the others.