小编Fra*_*kMN的帖子

C++内联类方法导致未定义的引用

当我尝试内联我的一个类的方法时,我收到编译器错误.当我拿走"内联"关键字时它会起作用.

这是一个简化的例子:

main.cpp中:

#include "my_class.h"

int main() {
  MyClass c;
  c.TestMethod();

  return 0;
}
Run Code Online (Sandbox Code Playgroud)

my_class.h:

class MyClass {
 public:
  void TestMethod();
};
Run Code Online (Sandbox Code Playgroud)

my_class.cpp:

#include "my_class.h"

inline void MyClass::TestMethod() {
}
Run Code Online (Sandbox Code Playgroud)

我尝试编译:

g++ main.cpp my_class.cpp
Run Code Online (Sandbox Code Playgroud)

我收到错误:

main.cpp:(.text+0xd): undefined reference to `MyClass::TestMethod()'
Run Code Online (Sandbox Code Playgroud)

如果我带走"内联",一切都很好.是什么导致了这个问题?(我应该如何内联类方法?是否可能?)

谢谢.

c++ inline

46
推荐指数
2
解决办法
2万
查看次数

C++:初始化列表/命名约定

以下代码适用于我的机器,但它是良好的做法/保证工作?

struct MyStruct {
   MyStruct(int x, int y, int z) :
       x(x),
       y(y),
       z(z) {
   }

   int x;
   int y;
   int z;
};
Run Code Online (Sandbox Code Playgroud)

具体来说,x(x)保证做我想要的吗?(也就是说,初始化列表中的变量是否始终查看该struct/class的成员?)

我不想使用前导或尾随下划线,因为x是结构的公共成员.

谢谢!

c++ naming initialization list

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

git/github和Web服务器部署配置

我正在运行一个Apache Web服务器,并想知道将更改(从github)部署到Web服务器的最佳方法是什么?

/ var/www /现在只能由root写入.

我应该直接在/ var/www /中使用我的git项目吗?(所以创建/var/www/.git/?)

但是,当我需要运行命令(即sudo git push)时不起作用(因为我的ssh键不在sudo下).

我自己(而不仅仅是root)制作/ var/www/writable会更好吗?或者我应该向root用户添加ssh密钥?或者我应该完全做其他事情?

谢谢.

apache git webserver github

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

当git push失败并且......"本地过时"时,我该怎么办?

我确信这是一个非常简单的解决方案,但我不确定为什么我推送到GitHub失败了.

现在它看起来像:

$ git push origin master
To git@github.com:user_name/project_name.git
 ! [rejected]        master -> master (non-fast-forward)
error: failed to push some refs to 'git@github.com:user_name/project_name.git'
To prevent you from losing history, non-fast-forward updates were rejected
Merge the remote changes before pushing again.  See the 'Note about
fast-forwards' section of 'git push --help' for details.
Run Code Online (Sandbox Code Playgroud)

和:

$ git remote show origin
* remote origin
  Fetch URL: git@github.com:user_name/project_name.git
  Push  URL: git@github.com:user_name/project_name.git
  HEAD branch: master
  Remote branch:
    master tracked
  Local ref configured for 'git push': …
Run Code Online (Sandbox Code Playgroud)

git github git-pull git-push git-remote

4
推荐指数
1
解决办法
5569
查看次数

SQL语法(具有多个外键的INSERTS)

如果我想在查找外键时插入记录,我可以这样做:

INSERT INTO stores_products (name, product_id)
SELECT 'storeABC',
       id 
  FROM products 
 WHERE name = 'product123';
Run Code Online (Sandbox Code Playgroud)

(其中product_id是products表的外键)

但是,当我需要从多个表中查找外键时,我无法弄清楚语法.

例如,我想做类似的事情:

INSERT INTO stores_products 
  (name, product_id, owner_id)
SELECT 'storeABC', products.id, owners.id 
 FROM products 
WHERE name = 'product123' 
 FROM owners 
WHERE name = 'owner456';
Run Code Online (Sandbox Code Playgroud)

(表名和列名只是一个例子,我知道从数据库设计的角度来看它没有多大意义,但我的问题是关于语法...).谢谢.

mysql sql select insert

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