Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Структурирование проекта / 5 сообщений из 5, страница 1 из 1
21.01.2013, 20:52
    #38118718
tur91
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Структурирование проекта
На пустом WF C++ проекте кнопка, которая вызывает функцию start_func из класса start. Эта функция читает файл в матрицу, из которой получает структуру RawData для дальнейшей обработки. К этой структуре должен быть доступ во многих файлах проекта.
Код: plaintext
1.
2.
3.
4.
5.
private: System::Void button1_Click(System::Object^sender,System::EventArgs^e)
{
    String^ filename = "C:\\AAA";
    start::start_func(filename);
}


Файл startfunc.h
Код: plaintext
1.
2.
3.
4.
5.
6.
#include "stdafx.h"
using namespace System;
public ref class start
{
public: static void start_func(String^);
};


Файл startfunc.cpp
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
#include "stdafx.h"
#include "opendata.h"
#include "rawdata.h"

using namespace System;
public ref class start
{
public: static void start_func(String^ filename)
   {
	RawData a = open_data::getdata(filename);
	// . . . . . . . . . . . последующая обработка
   }
};


Файл opendata.h
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
#include "stdafx.h"
#include "rawdata.h"
using namespace System;

public ref class open_data
{
public: static RawData getdata(String^);
};


Файл opendata.cpp
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
#include "stdafx.h"
#include "rawdata.h"
using namespace System;

public ref class open_data
{
   public: static RawData getdata(String^ filename)
   {
	RawData data1;
	data1.a = (gcnew array<int, 2>(2, 3));
	data1.b = (gcnew array<int, 2>(2, 3));
	return data1;
   }
};


Файл rawdata.h
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
#ifndef _RawData_
#define _RawData_

public ref class RawData
{
	public:
	array<int,2>^ a;
	array<int,2>^ b;
}; 
#endif

Извиняюсь за размер, не смог короче. Получаю ошибку error C3673: 'RawData' : class does not have a copy-constructor
Вопрос один: как функции getdata вернуть структуру RawData?
Я плохо понимаю смысл ref и static в классах и функциях, т.е. это можно и поменять, главное получить структуру.
...
Рейтинг: 0 / 0
21.01.2013, 21:15
    #38118733
Lord British
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Структурирование проекта
tur91 public: static RawData^ getdata(String^ filename)


автор RawData^ a = open_data::getdata(filename);


Я уже давно не использовал C++/CLI но рискну предположить что не хватает вон той пимбочки красной.
...
Рейтинг: 0 / 0
21.01.2013, 21:26
    #38118740
Lord British
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Структурирование проекта
Компилится
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
#pragma once

ref class MyClass
{
public:
	MyClass(void);
	static MyClass^ MyMethod();
};



#include "stdafx.h"
#include "MyClass.h"


MyClass::MyClass(void)
{
}

MyClass^ MyClass::MyMethod()
{
	return gcnew MyClass();
}


#include "stdafx.h"
#include "MyClass.h"

using namespace System;

int main(array<System::String ^> ^args)
{
	MyClass^ mc = MyClass::MyMethod();

    return 0;
}




Твой случай
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
#pragma once

ref class MyClass
{
public:
	MyClass(void);
	static MyClass MyMethod();
};



#include "stdafx.h"
#include "MyClass.h"


MyClass::MyClass(void)
{
}

MyClass MyClass::MyMethod()
{
	return gcnew MyClass();
}


#include "stdafx.h"
#include "MyClass.h"

using namespace System;

int main(array<System::String ^> ^args)
{
	MyClass mc = MyClass::MyMethod();

    return 0;
}


Error	1	error C3673: 'MyClass' : class does not have a copy-constructor	C:\Users\PuDon\Desktop\RepositoryExample\ConsoleApplication21\ConsoleApplication21\ConsoleApplication21.cpp	10	1	ConsoleApplication21


...
Рейтинг: 0 / 0
22.01.2013, 19:04
    #38120327
tur91
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Структурирование проекта
Lord British, спасибо!! Сейчас гораздо яснее, а то была просто катастрофа.

Тока далеко не уходи, у меня еще будет вопрос и по этому коду тоже. Но сначала надо все переварить.
...
Рейтинг: 0 / 0
24.01.2013, 12:25
    #38122961
tur91
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Структурирование проекта
Создаю пустой проект WF C++ с именем mystart и сажу на форму button1, а в событии пишу вызов функции, которая находится в отдельном файле, скажем в каком то стартовом классе: firstclass::startfunc();

Этот пустой проект с кнопкой находится где то в отдельной папке, не там где все проекты. Каждый раз когда я начинаю новый проект WF C++ я хотел бы сначала ликвидировать новую пустую форму и вызвать одной строчкой mystart и дальше открывать страницу где написан (фактически только продекларирован) firstclass и продолжать писать в startfunc(); что надо.

На самом деле у меня не просто форма с кнопкой, а вот такой мини-эксплорер и несколько несколько событий и листов для них.

Понятно ли я изложил свои нужды?
...
Рейтинг: 0 / 0
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Структурирование проекта / 5 сообщений из 5, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]