小编Leg*_*ion的帖子

C++不会让我交朋友

我有两个类,Mesh和MeshList.我希望MeshList具有可以更改Mesh的私有成员的函数.但它不会编译,我不知道为什么.这是我的代码.

Mesh.h

#ifndef _MESH_H
#define _MESH_H

#include "MeshList.h"
#include <iostream>

class Mesh
{
private:
    unsigned int vboHandle_;
    friend void MeshList::UpdateVBOHandle();
public:
    inline void Out() {std::cout << vboHandle_;}
};
#endif
Run Code Online (Sandbox Code Playgroud)

Mesh.cpp

#include "Mesh.h"
Run Code Online (Sandbox Code Playgroud)

MeshList.h

#ifndef _MESH_LIST_H
#define _MESH_LIST_H

#include "Mesh.h"


class MeshList
{

public:
    Mesh *mesh; //Line 11 Error
    void UpdateVBOHandle();
};
#endif
Run Code Online (Sandbox Code Playgroud)

MeshList.cpp

#include "MeshList.h"

void MeshList::UpdateVBOHandle()
{
    *mesh->vboHandle_ = 4;
}
Run Code Online (Sandbox Code Playgroud)

我收到这些错误:

MeshList.h(第11行)

  • 错误C2143:语法错误:缺少';' 在'*'之前
  • 错误C4430:缺少类型说明符 - 假定为int.注意:C++不支持default-int
  • 错误C4430:缺少类型说明符 - 假定为int.注意:C++不支持default-int

  • mesh.h(11):错误C2653:'MeshList':不是类或命名空间名称

  • meshlist.cpp(5):错误C2248:'Mesh :: vboHandle_':无法访问类'Mesh'中声明的私有成员
  • mesh.h(10):看看'Mesh :: vboHandle_'的声明
  • mesh.h(8):看'Mesh'的声明 …

c++ visual-c++

30
推荐指数
3
解决办法
908
查看次数

"用单一呼叫替换"是什么意思?

使用带有Single()的LINQ时,我总是以绿色下划线代码,并提示"将单个调用替换为单个".这是什么意思?以下是产生该建议的一行代码示例:

var user = db.Users.Where(u => u.UserID == userID).Single();
Run Code Online (Sandbox Code Playgroud)

如你所见,我只使用Single()一次.那么......这笔交易是什么?

.net c# linq

19
推荐指数
3
解决办法
9889
查看次数

是否在c#中使用了pimpl习语?

我来自C#背景,最近开始学习C++.我遇到过的一件事是pimpl成语.我为一些大公司做过C#开发,但从未遇到过它.

也许这是错误的,但我的理解是,由于使用头文件而没有部分类选项,因此在C++中这是必要的.

但在C#中,我们会一直使用类库构建应用程序.如果库代码中的内容发生了变化,我们会将其重新编译为dll并在应用程序项目中引用新的dll.

我真的不明白为什么用C++不能做同样的事情.Pimpl对我来说就像是一个丑陋的黑客.

c# c++ pimpl-idiom

15
推荐指数
1
解决办法
2280
查看次数

即使在IIS的web.config中使用<remove>标记后,也会出现重复的部分错误

我有一个站点在另一个站点的子目录中运行.它们在不同的应用程序池中运行 这两个站点正在运行不同版本的Entity Framework.所以在子目录中的web.config中我有:

<remove name="entityFramework"/>
<section name="entityFramework" type="System.Data.Entity.Internal.ConfigFile.EntityFrameworkSection, EntityFramework, Version=4.4.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" requirePermission="false" />
Run Code Online (Sandbox Code Playgroud)

但即使使用<remove>标签我仍然会收到此错误:

Section or group name 'entityFramework' is already defined. Updates to this may only occur at the configuration level where it is defined.
Run Code Online (Sandbox Code Playgroud)

我还<location>尽可能在父web.config中放置了标签:

<location path="." inheritInChildApplications="false">
Run Code Online (Sandbox Code Playgroud)

<location>标签周围存在父web.config中的<entityFramework>部分.

我已经enableConfigurationOverride="false"在IIS的applicationHost.config文件中放置了(System32和SysWOW64中的文件).

如何防止子目录中的站点看到父entityFramework标记?

编辑

IIS版本:7.5.7600.16385

从父web.config:

<configSections>
  <section name="entityFramework" type="System.Data.Entity.Internal.ConfigFile.EntityFrameworkSection, EntityFramework, Version=6.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" requirePermission="false" />
</configSections>
Run Code Online (Sandbox Code Playgroud)

  <location path="." inheritInChildApplications="false">
      <entityFramework>
        <defaultConnectionFactory type="System.Data.Entity.Infrastructure.LocalDbConnectionFactory, EntityFramework">
          <parameters>
            <parameter …
Run Code Online (Sandbox Code Playgroud)

asp.net iis

14
推荐指数
1
解决办法
1037
查看次数

实体数据模型设计器不会打开edmx文件

奇怪的是,几天前工作正常.我在表中添加了一个新列,并将通过设计器更新模型,现在它说"实体数据模型设计器无法显示您请求的文件.您可以使用XML编辑器编辑模型."

关于新字段没什么特别值得注意的,它只是SQL Server 2008中一个不可空的位字段.

.net mapping ado.net edmx entity-framework-5

13
推荐指数
5
解决办法
3万
查看次数

在SQL Server数据库的所有表中查找nvarchar(max)类型的所有列

我在stackoverflow上发现了这个问题几乎回答了我的问题:在SQL Server数据库的所有表中查找特定类型的所有列

但是我需要专门找到nvarchar(max)类型的所有字段.如果我试试这个:

SELECT table_name [Table Name], column_name [Column Name]
FROM information_schema.columns where data_type = 'nvarchar(max)'
Run Code Online (Sandbox Code Playgroud)

它不起作用,也没有返回任何内容.如果我试试这个:

SELECT table_name [Table Name], column_name [Column Name]
FROM information_schema.columns where data_type = 'nvarchar'
Run Code Online (Sandbox Code Playgroud)

它有效,但有数百个结果,我只关心最大尺寸的字段.如何具体选择所有nvarchar(max)字段?

sql sql-server

9
推荐指数
2
解决办法
3460
查看次数

在OpenGL ES 2.0中独立转换对象

我见过的所有教程总是使用单个对象,如三角形或立方体.但我不清楚如何独立操作单独的对象.我已经看过一些引用固定功能管道并使用pushmatrix和popmatrix的教程,但是使用可编程管道,这些功能都消失了.下面是一个初始化函数和一个绘图函数,它在屏幕上绘制一个三角形并围绕Z轴旋转.有人可以给我看代码,甚至伪代码添加第二个三角形并独立于其他三角形旋转它?说不同的轴或相反的方向?

他们来了:

int Init(ESContext* esContext)
{
    UserData* userData = (UserData *)esContext->userData;
    const char *vShaderStr =
        "attribute vec4 vPosition;  \n"
        "uniform mat4 MVPMatrix;"
        "void main()                \n"
        "{                          \n"
        "   gl_Position = MVPMatrix * vPosition;\n"
        "}                          \n";

    const char *fShaderStr =
        "precision mediump float;   \n"
        "void main()                \n"
        "{                          \n"
        "   gl_FragColor = vec4(1.0, 0.0, 0.0, 1.0); \n"
        "}                          \n";

    GLuint vertexShader;
    GLuint fragmentShader;
    GLuint programObject;
    GLint linked;
    GLfloat ratio = 320.0f/240.0f;

    vertexShader = LoadShader(GL_VERTEX_SHADER, vShaderStr);
    fragmentShader = LoadShader(GL_FRAGMENT_SHADER, fShaderStr);

    programObject = …
Run Code Online (Sandbox Code Playgroud)

opengl-es opengl-es-2.0

8
推荐指数
1
解决办法
3758
查看次数

将formdata NameValueCollection转换为object

我有一个WebAPI控制器,接受多部分表单数据格式的帖子.这样做是因为我在同一篇文章中获取了二进制文件和表单数据.

我尝试从这个问题中调整解决方案:如何将namevaluecollection自动化为强类型类?

这是改编的代码:

    private Event nvcToCoreEvent(NameValueCollection nvc) {
        Event e = new Event();
        foreach (string kvp in nvc.AllKeys) {
            PropertyInfo pi = e.GetType().GetProperty(kvp, BindingFlags.Public | BindingFlags.Instance);
            if (pi != null) {
                pi.SetValue(e, nvc[kvp], null);
            }
        }
        return e;
    }
Run Code Online (Sandbox Code Playgroud)

问题是来自nvc.AllKeys所有的密钥看起来像这样:"coreEvent[EventId]"或者:"coreEvent[AuthorUser][UserId]"

pi始终为null,并且没有任何内容被映射,因为GetProperty期望传递"EventId",而不是"coreEvent[EventId]".如果只有几个属性它就不会那么糟糕但是我的Event类非常大并且包含包含它们自己的子对象等的子对象.它还包含许多对象列表,它们也可以有自己的子对象对象.

除了编写关键字符串解析器和映射引擎以将值映射到正确的子对象或集合之外,还有其他选择吗?

编辑这是请求的类和示例数据:

活动类

public class Event {
    public Event() {
        Documents = new List<Document>();
        SignOffs = new List<SignOff>();
        CrossReferences = new List<CrossReference>();
        Notes = …
Run Code Online (Sandbox Code Playgroud)

.net c# asp.net-web-api

8
推荐指数
1
解决办法
4088
查看次数

使用存储库模式时如何取回数据库生成的 ID?

在我的解决方案中,我有一个域项目和一个 DataAccess 项目。My Domain 项目包含用于各种存储库的域对象和接口以及用于包含我所有存储库的 UnitOfWork 的接口。我的 DataAccess 项目包含所有这些接口的实现以及我的域对象的 EF 版本。

因此,如果我有一个被调用的类Person并且我想向Person数据库添加一个,它看起来像这样:

unitOfWork.People.Add(person);
unitOfWork.Complete();
Run Code Online (Sandbox Code Playgroud)

在里面,unitOfWork.People.Add(person)我使用 AutoMapper将我的域Person对象映射到我的 EFPerson对象。然后我将我的 EFPerson对象添加到 EFDbContext对象中。

public void Add(Person person) {
  DataAccess.Entities.Person dbPerson = Mapper.Map<DataAccess.Entities.Person>(person);
  dbContext.People.Add(dbPerson);
}
Run Code Online (Sandbox Code Playgroud)

Complete() 函数只是包装了 SaveChanges()。

public int Complete() {
  dbContext.SaveChanges();
}
Run Code Online (Sandbox Code Playgroud)

通常 EF 会在插入后更新插入对象的 DB 生成的 ID。但在这种情况下,EF 对我的 Domain Person 对象一无所知。

由于我的 Domain Person 对象没有它的 ID,我无法更新数据库条目或从数据库中重新获取它。

我能想到的唯一替代方法是在服务器上生成一个 guid 并将其用作 ID。但这会以两个 ID 的形式产生冗余。它也不是非常用户友好,因为用户将在搜索字段中引用此 ID。记住 ID 135 比记住 guid 要简单得多。 …

c# entity-framework

7
推荐指数
1
解决办法
2197
查看次数

如何在删除uib-accordion标题时删除出现的蓝色边框?

我尝试过以下问题中提出的解决方案无济于事:

从Chrome中的css自定义样式按钮中删除蓝色边框

如果单击按钮,如何删除按钮中的蓝色框阴影边框

如何删除文本/输入框周围的边框(轮廓)?(铬)

如何删除输入文本元素上的边框突出显示

删除按钮上的蓝色"选定"轮廓

无论如何,要在快速点击时阻止Chrome中的元素蓝色突出显示?

单击时,bootstrap按钮显示蓝色轮廓

单击表单输入字段时如何摆脱蓝色外边框?

在HTML中,我有以下内容:

<uib-accordion-heading>
    <div id="fart1" ng-if="!contactsAccordionIsOpen" class="noSelect" style="outline: none;">Contacts<span class="glyphicon glyphicon-plus-sign pull-right"></span></div>
    <div id="fart2" ng-if="contactsAccordionIsOpen" class="noSelect" style="outline: none;">Contacts<span class="glyphicon glyphicon-minus-sign pull-right"></span></div>
</uib-accordion-heading>
Run Code Online (Sandbox Code Playgroud)

整个手风琴标题周围没有出现蓝色轮廓,但形状适合文本.我尝试过内联样式,按ID和类选择,但即使!important它没有改变.

在CSS我有:

#fart1:focus {
    border: none !important;
    outline: none !important;
    -webkit-touch-callout: none;
    -webkit-user-select: none;
    -khtml-user-select: none;
    -moz-user-select: none;
    -ms-user-select: none;
    user-select: none;
}

#fart2:focus {
    border: none !important;
    outline: none !important;
    -webkit-touch-callout: none;
    -webkit-user-select: none;
    -khtml-user-select: none;
    -moz-user-select: none;
    -ms-user-select: none;
    user-select: none;
}

.noSelect {
    border: none …
Run Code Online (Sandbox Code Playgroud)

css twitter-bootstrap angular-ui-bootstrap

7
推荐指数
3
解决办法
6577
查看次数