I have just downloaded Visual C++ and am trying to write a noddy application. I am well versed in C++ and write for the unix platform.
I am therefore bemused by the compilation errors MS VC++ gives!
Here are the headers///
Code:
#pragma once
ref class FactoryBase
{
public:
FactoryBase(void);
public:
virtual ~FactoryBase(void);
};
#pragma once
#include "factorybase.h"
class Widget;
ref class Factory : public FactoryBase
{
public:
Factory(void);
public:
virtual ~Factory(void);
Widget * const CreateWidget();
};
#pragma once
ref class Widget
{
public:
Widget(void);
public:
virtual ~Widget(void);
};
And now for the source!
Code:
// Factory.cpp : main project file.
#include "stdafx.h"
#include "Factory.h"
#include "Widget.h"
using namespace System;
int main(array<System::String ^> ^args)
{
Console::WriteLine(L"Hello World");
return 0;
}
Factory::Factory(void)
{
}
Factory::~Factory(void)
{
}
Widget * const Factory::CreateWidget()
{
return new Widget();
}
#include "StdAfx.h"
#include "FactoryBase.h"
FactoryBase::FactoryBase(void)
{
}
FactoryBase::~FactoryBase(void)
{
}
#include "StdAfx.h"
#include "Widget.h"
Widget::Widget(void)
{
}
Widget::~Widget(void)
{
}
Finally this output?
Code:
1>------ Build started: Project: Factory, Configuration: Debug Win32 ------
1>Compiling...
1>Factory.cpp
1>c:\documents and settings\kevin matthews\my documents\visual studio 2005\projects\factory\factory\Widget.h(4) : error C3816: 'class Widget' was previously declared or defined with a different managed modifier
1> c:\documents and settings\kevin matthews\my documents\visual studio 2005\projects\factory\factory\Factory.h(3) : see declaration of 'Widget'
1>.\Factory.cpp(24) : error C3699: '*const ' : cannot use this indirection on type 'Widget'
1> compiler replacing '*const ' with '^' to continue parsing
1>.\Factory.cpp(24) : error C2556: 'Widget ^Factory::CreateWidget(void)' : overloaded function differs only by return type from 'Widget *const Factory::CreateWidget(void)'
1> c:\documents and settings\kevin matthews\my documents\visual studio 2005\projects\factory\factory\Factory.h(12) : see declaration of 'Factory::CreateWidget'
1>.\Factory.cpp(24) : error C2373: 'Factory::CreateWidget' : redefinition; different type modifiers
1> c:\documents and settings\kevin matthews\my documents\visual studio 2005\projects\factory\factory\Factory.h(12) : see declaration of 'Factory::CreateWidget'
1>.\Factory.cpp(25) : error C2750: 'Widget' : cannot use 'new' on the reference type; use 'gcnew' instead
1>Build log was saved at "file://c:\Documents and Settings\Kevin Matthews\My Documents\Visual Studio 2005\Projects\Factory\Factory\Debug\BuildLog.htm"
1>Factory - 5 error(s), 0 warning(s)
========== Build: 0 succeeded, 1 failed, 0 up-to-date, 0 skipped ==========