标签: c++-cli

C++类读取为变量,default-type int?说什么?

所以,我有两个类......结构非常基础.我尝试将一个导入另一个,并声明该类类型的新对象...但是,它似乎读取类名作为变量的名称?!

下面提供的头类不会正确读取"ApplicationManager"类.码:

####ifndef _GAME_H_  
####define _GAME_H_  
####include "application.h"  
####include "applicationmanager.h"  
class Game : public Application  
{  
public:  
    Game();  
    ~Game();  
    void LoadContent() override;  
    void UnloadContent() override;  
    void Draw() override;  
private:  
    //int ApplicationManager; //WHY DOES THIS COMPILE??!  
    ApplicationManager management; //This DOES NOT WORK?  
};  
####endif  
Run Code Online (Sandbox Code Playgroud)

这是"ApplicationManager"类的标题.码:

####ifndef _APPMANAGER_H_  
####define _APPMANAGER_H_  
####include "game.h"  
####include "application.h"  
class ApplicationManager  
{  
public:  
    ApplicationManager(void);  
    ~ApplicationManager(void);  
private:  
};  
####endif  
Run Code Online (Sandbox Code Playgroud)

发生的错误告诉我,我需要一个";" 在"管理"之前,并且"ApplicationManager"缺少类型说明符,因此假定它是默认类型int.

...任何想法为什么它不能正确编译?其他人可以尝试这个并报告结果吗?我复制了代码,并将其粘贴到另一个解决方案中,看看是否有东西被破坏了......它仍然无效.

c++-cli

0
推荐指数
1
解决办法
240
查看次数

.Net Framework编程的语言

是否建议使用C++/CLI作为新的.Net应用程序的主要语言?应用程序将不使用本机代码(纯CLI).这个问题的原因是,我想使用框架而不是倾向于使用像C#或VB这样的新语言.

斯特凡

.net c++-cli

0
推荐指数
2
解决办法
163
查看次数

C++/CLI奇怪的继承问题

我的项目中有3个班级(当然是名字A,B然后C).A是抽象的.它们具有以下关系:
A是基类的B
B基类C

在里面C,我宣布一个变量vector<A*> member_vector;.这导致以下问题:

C3699 :: '*'不能在'A'
C4368 类型上使用此间接:无法定义'member_vector'为托管成员'C':不支持混合类型.

你有没有发现这个错误的线索?我认为循环类的使用可能存在问题,但是,如何克服它呢?

inheritance c++-cli visual-c++

0
推荐指数
1
解决办法
264
查看次数

为什么NULL字符串不同于""字符串?

以下编码方式有什么区别:

if (String::IsNullOrEmpty(TextBox1->Text)) 
Run Code Online (Sandbox Code Playgroud)

if (TextBox1->Text == "") 
Run Code Online (Sandbox Code Playgroud)

.net string c++-cli

0
推荐指数
1
解决办法
199
查看次数

VSU 2012 - 必须定义入口点

Visual Studio Ultimate 2012 - 必须定义入口点.

你好.我有文件:

MyForm.h

Forma.h

MyForm.cpp

在Myform.cpp我有

#include "MyForm.h"

using namespace std;
using namespace System;
using namespace System::Windows::Forms;
void main(array<String^>^args){
Application::EnableVisualStyles();
Application::SetCompatibleTextRenderingDefault(false);
Project1::MyForm form;
Application::Run(%form);    
}
Run Code Online (Sandbox Code Playgroud)

但是当我试图重新发现它时,我有错误:

错误2错误LNK1561:必须定义入口点

.net c++-cli winforms

0
推荐指数
1
解决办法
2355
查看次数

无法从'const char [11]'转换为'System :: Windows :: Forms :: TextBox ^'

我是c ++的新手,我正在用visual c ++制作一个程序.在出现此错误之前,一切都很顺利:

error C2440: '==' : cannot convert from 'const char [11]' to'System::Windows::Forms::TextBox ^' 
Run Code Online (Sandbox Code Playgroud)

我很确定它与我在文本框中放入数字而不是单词有关.

这是代码的一部分:

 if (fnum==true){

             if (phoneNum=="555555555"){ // i think this part causes the problem

                //code for when the phone number is correct

             } else {

                //if phone number is not correct

             }

         }
Run Code Online (Sandbox Code Playgroud)

我试过把'5555555555'代替"5555555555",但它给了我一个不同的错误

error C2015: too many characters in constant
error C2446: '==' : no conversion from 'int' to 'System::Windows::Forms::TextBox ^'
Run Code Online (Sandbox Code Playgroud)

下面是代码的其余部分:

#pragma once
#include <stdio.h>
#include <Windows.h>


bool fnum = true;

bool …
Run Code Online (Sandbox Code Playgroud)

c++-cli visual-c++

0
推荐指数
1
解决办法
741
查看次数

在没有ANSI/ISO C++的先验知识的情况下学习C++/CLI

我以前用C#编程,我想学习C++.在事先了解ANSI/ISO C++之前,我可以直接学习C++/CLI吗?

c++-cli

0
推荐指数
1
解决办法
57
查看次数

IntPtr与C ++指针

我认为答案会很短,例如“是”或“否”,所以我一次有两个问题。

问题1:我阅读了IntPtr的理论解释,但与本机C ++指针相比,它更容易理解。可以说我有一些结构。

ref struct CData
{
    double Key;
};
Run Code Online (Sandbox Code Playgroud)

使用本机代码中的指针,我可以做到:

1) int address = & CData; // if i need its address
2) double value = * CData; // if i need value of its field
3) void * pointer1 = CData; // if i want create pointer to struct
4) CData * pointer2 = CData; // if i want create pointer to struct
Run Code Online (Sandbox Code Playgroud)

如果CData是托管对象,则可以通过以下方式完成上述操作:

1) IntPtr address = GCHandle::Alloc(CData).AddrOfPinnedObject() // if i need address
2) cannot get …
Run Code Online (Sandbox Code Playgroud)

pointers c++-cli

0
推荐指数
1
解决办法
6113
查看次数

相当于C#"不安全"代码中的memset

我有一个C#DLL,其代码派生自一个基类,它是用托管C++编写的.(我对基类代码没有任何控制权)

此基类(在托管C++中)具有成员

int *buffer
Run Code Online (Sandbox Code Playgroud)

预期派生类(在C#中)是memset(用零填充).派生类知道缓冲区的大小.

我使用不安全的上下文,在派生类中访问基类的成员"int*buffer".请告诉我有什么特别的方法可以在c#中的"不安全"上下文中设置缓冲区.

我已经研究过这个与C#中的memset相同的是什么?有关详细信息,但我想知道有什么特别针对"不安全"的背景.

背景:这是一个转换项目,其中派生类本身之前是托管c ++.现在我将派生类DLL单独转换为C#.我也无法控制基类代码!当前代码流如下:只有派生类知道缓冲区的大小.基类通过从派生中获取缓冲区的大小来为该特定大小创建内存,但它不会填充零.派生类Zero首先填充它,然后需要用其内容适当地填充缓冲区.虽然很奇怪,但事实就是如此.

谢谢!

c# c++-cli

0
推荐指数
1
解决办法
3426
查看次数

C ++ / CLI混合托管/本机DLL无法正常工作

我正在创建一个C ++ / CLI DLL,该DLL应该用作包装器。它的目的是包装C#SDK并将函数呈现给本机C ++代码。我总是收到混合类型的错误,并且托管类中的using语句被标记为红色,因此,到目前为止,这是我得到的:

#pragma once

#include <iostream>
#include <memory>
#include <string>

namespace TPInterface
{
class ITPFactory
{
public:
  static __declspec(dllexport) std::shared_ptr<ITPFactory> CreateTPFactory();
};
}
Run Code Online (Sandbox Code Playgroud)

这将创建TPFactory的实例。

#pragma once

#include "ITPSSITotalStation.h"
#include "TPSSITotalStation.h"
#include "ITPFactory.h"
#include <iostream>
#include <memory>
#include <string>

namespace TPInterface
{
class TPFactory : public ITPFactory
{
public:
  static std::shared_ptr<SensorSoftwareInterface::TotalStation::ITPSSITotalStation> CreateTPSSITotalStation(std::string pathToDriver);
};
}
Run Code Online (Sandbox Code Playgroud)

这将创建一个TPSSITotalStation对象,该对象是ITPSSITotalStation接口。

TPSSITotalStation-> TPSSIBase->TPBase

二者TPSSIBaseTPBase含有被写入在托管代码(参照类)的类(gcroot和报头)。

现在,编译器告诉我,那些ref类是混合的,不允许的,依此类推。我在这里没问题...我在做什么错?

抱歉,我很笨,我是C ++的新手,来自C#。

错误:

Error   7   error C4368: cannot define 'm_selectedPath' …
Run Code Online (Sandbox Code Playgroud)

c# c++ clr c++-cli command-line-interface

0
推荐指数
1
解决办法
255
查看次数